Saturday, December 15, 2018

An iOS macOS Analogy

On ATP episode 304: Island of Shortcuts, Siracusa mentioned the current Apple community discussion about iOS as it compares to macOS and what lies ahead. He said he has been unable to nail down an analogy that perfectly summarizes the differences between two operating systems and their fundamental behaviors like, windows vs. split view, command line vs. shortcuts, Finder vs. Files, and various other areas.

Long after the episode ended I kept thinking about this analogy and lucky for me I had a three hour car ride in my future. I initially focused on Shortcuts and how it was the perfect example of taking a process like writing a little program, but making it work within a rigid framework with a simple user interface. From the beginning iOS has followed this concept for application launching, multi-tasking, files access and application launching. The next requirement for the analogy was finding a situation where the original thing and the new simplified thing continue to live alongside each other. Finally, the hardest part was finding something where the most skilled people at using this thing tended to use the original version rather than the new up and coming process.

I thought about this for a while and then posed these questions to my wife. After a little thought and then some discussion we cracked it, ovens vs. microwave ovens. The oven in this case is macOS and the microwave oven is iOS.
- Both of these can be used to cook food, but in general ovens use a temperature setting while microwaves use the concept of power percentage. I bet there are microwave haters complaining about all the hoops they have to jump through to figure out the different power setting and time combinations just to warm something up properly, when they are used to a single temperature setting for accomplishing the same task.
- Most people when given the choice of having just one of these would go with the oven, even though they would probably be able to cook most of what they wanted to in a microwave oven.
- Extremely skilled chefs can probably cook dishes in the microwave that rival those cooked in a regular oven. The Viticci of microwaves can probably cook a good lasagna.
- The first ovens may have been very simple with a single dial and a limited ability, but some of the microwave ovens todays have a rich set of feature allowing for more complicated cooking options than ever before.
- The microwave oven has a popcorn button for cooking, it doesn’t get much easier.

Do you see it?? Both types of ovens do the same basic things, but they do them in very different ways. Heating up a cup of water is much better suited for the microwave oven, but baking a cake on the other hand is best suited for the big oven. However, in the end it comes down to your preference and what task you are trying to accomplish. I think this is very similar to the areas of iOS and macOS that currently crossover.

I did leave the best until the end though, because you may have noticed I didn’t mention the stove top, well that is the thing that brings this all together. The stove top is the piece of this that really matters, it is the thing that the professional chef needs in order to do his job. It is where the really tricky part of the cooking is done, the most finely honed part of their craft involves frying pans, sauteeing and whateveer other fancy things chefs do with a gas burner. It is the hardest part of the cooking toolset to replicate, because it is so basic in its makeup, but its use cannot be rigidly constrained. The controls are simple, you just turn on a burner, but how do you simplify the next steps of cooking on a stove top for the masses, you can’t just add an omelet button. The tricky part of getting iOS ready for developers is figuring out how to add a stove top so they can cook up some amazing new professional apps.

Shortcut Bubble Trouble

Shortcut Bubble Trouble

On ATP episode 304: Island of Shortcuts, there was a discussion comparing and contrasting Shortcuts and the command line. Marco and Casey made some great points about how the command line, more or less, is something that is common across all major operating systems today. While Shortucts is great it is something new you have to learn, whereas the command line is something lots of people already know and lives just below the surface out of reach of iOS users.

Siracusa said he has played around with Shortcuts and thinks that people have been able to do some impressive and useful things with them. However, he continues that “if you are a programmer then it is far less appealing to use because you have to write a program with little GUI bubbles in a big long linear list”. I definitely related to that, because I have created a few different Shortcuts, from a medical log to one that generates dismissal letters for my kids. Since I am a programmer it would have been a lot quicker for me to just type 4 or 5 commands into a text file rather than going through the tedious process of searching through the blocks, dragging them into position and typing in the various parameters. For example, my medical log shortcut includes 10 blocks, but I bet it could probably be simplified to 3–4 lines of code.

Given the recent discussion around iOS vs macOS it definitely got the gears going in my brain. Do I want a command line app in iOS because I am comfortable in my macOS habits or is it more because it is a more efficient tool? It goes back to a previous blog post I wrote about putting a real keyboard on an iPad, An iOS laptop. Do I want a laptop form factor for iOS because I am more comfortable with it or because that form factor is more efficent for typing and using? Even if I don’t get those things I hope that the Shortcuts team removes a layer of abstraction for the app and lets you write Shortcuts in some sort of an AppleScript or JavaScript format in the future.

Friday, August 17, 2018

macOS Screenshots and the Touchbar

tl;dr  If you change the screenshot destination setting to anything besides Desktop on the Touch Bar it will override the default behavior of the keyboard shortcut and use your setting from the Touch Bar.

I recently got a 2018 13" MacBook Pro with the Touch Bar and it has been an amazing machine.  At first I didn't really love the Touch Bar, but the more I try to use it the better it gets.  The idea of replacing those old function keys with a dynamic display is smart, although I would prefer a physical button for the escape key. 

I was taking a selection screenshot (command-shift-4) today and noticed that the Touch Bar had a couple options on it for the destination of the image (Desktop, Documents, or clipboard) and the thing to capture (selection, window, screen).  I always struggled with the keyboard shortcut for copying to clipboard (ctrl-command-shift-4), so I was delighted to be able to trigger the "file" destination shortcut, but change it to the clipboard using the Touch Bar.

Fast forward to later in the day... I was using an external monitor with the MacBook closed and tried to do a selection screenshot (command-shift-4).  I selected the area to capture, let go and waited for the file to appear on the desktop, but nothing happened.  I tried again, but tried pasting into Messages and to my surprise the image showed up.  Turns out if you change the screenshot destination setting to anything besides Desktop on the Touch Bar it will override the default behavior of the keyboard shortcut and use your setting from the Touch Bar.

In order to change it back you have to get the screenshot controls to appear on the Touch Bar and set the destination to Desktop.

Saturday, June 23, 2018

Iceland in a Couple Days

If you find yourself in Iceland for a couple of days here are my recommendations based on my trip there in 2014.

Blue Lagoon

If your time is very limited the closest attraction to Keflavik airport is Blue Lagoon It is a little pricey, but is an amazing and unqiue experience.

Downtown Reykjavik

The next closest attraction is downtown Reykjavik main shopping area, Laugavegur street. It is about a 40 minute drive from the airport and has lots of shops and a few different attractions. I highly recommend a little bakery called Sandholt. The food was great and it ended up being our go to place for starting our day.

The other stop we made each day was for coffee, of course, and the best place we found was Reykjavik Roasters. The espresso was fantastic and their croissants were very tasty.

While wandering downtown you should walk out to the harbor and check out the modern looking Harpa Concert Hall

Up the hill from the harbor is a statue of Leif Eriksson next to the Church of HallgrĂ­mur

Finally, if you happen to be downtown in the evening or late night you should check out the amazing hot dogs at Bæjarins beztu pylsur.

Golden Circle

Besides the Blue Lagoon the second thing you are most likely to hear about Iceland is the Golden Circle. It is a tourist loop that starts near Reykjavik and takes people to several different geologically significant features.

One of the attractions on the northern end of the loop is Gullfoss. It is a huge waterfall with a great visitor center and a nice lunch spot.

Heading back towards Reykjavik on the loop you will come to Geysir. It is a pretty small area with several different hot spring related features include a couple different geysers and multiple boiling mud pits. Here is an image of one of the larger geysers.

One of my favorite stops on the Golden Circle was Althing in Thingvellir National Park. It is the boundary of the North American and European tectonic plates and makes for some dramatic terrain.

Southern Iceland

If you choose to skip the Golden Circle, but want to check out something slightly less touristy head a couple hours east of Reykjavik towards Skogar. The road there will let you experience many different types of terrain you will find in Iceland. After driving across a long flat plain you will see your first big waterfall, Seljalandsfoss. It is a great place to stop and take some photos before continuing along the shore in front of one of the large glaciers on the island.

A little further east of there is the waterfall you have probably seen in every video about Iceland, Skogafoss It is huge and has a long staircase you can climb to get to the top of it. However, if you have some extra time once you are at the top of the big waterfall you can climb over a little barrier and follow a hiking trail that follows the river uphill with some amazing views of some smaller waterfalls.
Finally you will arrive at the Skogar Museum, where you can learn about Iceland and explore some classic Icelandic structures.

Assorted travel tips:
  • The exchange rate at the time of this post is about 108 Krona to 1 dollar, so just drop the last two numbers of the krona price to get a comparable dollar value. 500 krona pastry would be 5 dollars.
  • We rented a car so we could “choose our own adventure”, but there are many tour groups that can take you to all of the above attractions.
  • Most people speak English, but as always it helps to learn some words, Icelandic Phrasebook

Thursday, April 19, 2018

Creativity Drought

Over the last couple years I have spent a lot of spare time working on various creative projects including this blog, setting up and hosting my own website, drone videos, and the Kilobyte podcast. They each managed to challenge me in different ways, whether it was finding the right equipment for podcast recording, learning about setting up a Linux server, or understanding how to build and pilot a quadcopter. It was also difficult trying to find enough time in my schedule to work on each thing in a meaningful way. Somehow I managed to find the time and was quite happy with my first pass at all of it.

Going into this year I hoped to adopt a yearly theme as was discussed on Cortex #62: 2018 Yearly Themes. The basic idea is to find a theme for the year (or season) and use it as a guide for decisions throughout the year rather than setting a bunch of goals for the year you are likely to break. I spent several days thinking about the past year, what I had accomplished and the direction I wanted to head for the upcoming year. It was really important that I build on the previous year’s learning, but step it up in some way. Initially I was leaning towards creating content more consistently, but I think before that I need to make it easier for me to actually create and post the content.

I was getting close, but just as I started to narrow down on a theme something happened and I got distracted. It is hard to say for sure what happened, but my creative output went down to zero. Thankfully I have recognized it and have started down the road to correcting course. Here is my first step in creating more content again with hopefully more to come soon.

Thursday, April 12, 2018

MacOS, Maven and Tilde Folders

I recently set up a new MacBook Pro for development and installed some developer tools like Java and Maven.  After checking out my source code from Subversion and building it using Maven a folder with the name tilde (~) appeared in the same directory as my source code.  I deleted the folder and a little while later I noticed it was back.  After some digging around I found that setting the path of my local maven repository in my settings.xml file so it started with a ~ for my home directory was the problem.  Every time I ran a build it was trying to put a new local repository in a tilde directory of the working directory.  After updating the path to use /Users/{username} it stopped creating the tilde folder.

Monday, February 26, 2018

Angular CLI Upgrade 'Cannot find module' Error

Every couple months I try to upgrade to the latest version of the Angular CLI and every time I run into this error.

Cannot find module 'webpack/lib/dependencies/ContextElementDependency'
Error: Cannot find module 'webpack/lib/dependencies/ContextElementDependency'
    at Function.Module._resolveFilename (module.js:469:15)
    at Function.Module._load (module.js:417:25)
    at Module.require (module.js:497:17)
    at require (internal/module.js:20:19)
    at Object.<anonymous> (C:\Users\\node_modules\@ngtools\webpack\src\plugin.js:8:34)
    at Module._compile (module.js:570:32)
    at Object.Module._extensions..js (module.js:579:10)
    at Module.load (module.js:487:32)
    at tryModuleLoad (module.js:446:12)
    at Function.Module._load (module.js:438:3)

Every time I realize I miss a step so I want to document the steps I ended using so I don't have to search for the solution again.  All the steps below are recommended by the Angular CLI Upgrade page, except the highlighted step below that removes the package-lock.json file.

Global install upgrade
NPM will keep a globally installed version of the Angular CLI that will be used across the system. It is updated using these steps, which will uninstall the current version and then install the new version.

npm uninstall -g @angular/cli
npm cache verify
# if npm version is < 5 then use `npm cache clean`
npm install -g @angular/cli@latest

Local install upgrade
The Angular project itself will have its own version of the CLI installed in the node_modules folder of the project.  It is updated using these instructions, which will remove the node_modules directory, update the version of the dependency in package.json and then reinstalls all the dependencies.  

rm -rf node_modules dist 
rm package-lock.json # deletes the package.json lock file
npm install --save-dev @angular/cli@latest
npm install