Tue, 08 Nov 2016 13:12:17 +0000
As I explore running on Windows, I've been thinking about the apps and tools that I use. I went through a similar exercise when I dove into Android.
I definitely felt that one's enjoyment of a platform might come to how much you're willing to embrace that company's entire ecosystem. Using all Apple products for close to 10 years now had meant that moving from device to device was relatively effortless. Many of the recent features like unlocking my MacBook with my watch or having a universal clipboard are pretty handy.
The moment multiple platforms come into play, all this convenience starts to disappear.
As a result, I've started being more conscientious about where I want stuff to live. For example, do I store all my files in iCloud? That doesn't help me on Windows or Android. Then there's music. And photos. And so on.
This also goes for the apps that I choose to use. Even something as simple as a to-do app has been a frustration of mine as I seek to find something that not only meets my needs but can do so on all platforms. Not easy to do. (groan)
As a developer, it makes me think about the experiences I want to create and how I could reach the largest audience but also how I can create a great experience over all those platforms.
The web, of course, is a natural fit. There's a web browser on every platform. I do like standalone apps and I like the experience that native apps can provide. Sometimes those things are subtle. Performance, rendering, scroll or mouse events, and so many other things can often make me feel like I'm in an uncanny valley of applications.
The last version of iTunes, for example, would do this weird thing where it would reset the scroll position every time I selected an item. It ruined iTunes for me. Making a playlist was excruciating.
I'm hoping that Progressive Web Apps will fill this need. With local storage, service workers, notifications, and access to other native resources, we'll be able to build cross platform applications more easily. (Not that testing those applications will be easier, but that's another story.)
For to-do apps, Wunderlist and Todoist seem to be the best of the bunch but both frustrate me in different ways.
For things like Twitter and Facebook Messenger, I've just gone with the web. They seem to provide the best experience right now. And Edge has worked just fine. Although I switch over to Chrome to do a few things. (And the lack of 1Password integration in Edge is a bit frustrating.)
Having 1Password available on all platforms has been a huge timesaver. The implementation on Windows, in general, is a bit behind but there have been and continue to be regular updates to improve the integration.
For photos, I've been using Lightroom. I like the mobile implementation but the need to store all the photos locally on desktop is a bit of a frustration. I like having my photos in the cloud and just pulling them down to edit them.
For all my other files, I think I'm going with Dropbox. I already have it and its cross-platform availability works for me. It also has integrations with a number of apps that other platforms don't have.
So, Dave Rupert had #davegoeswindows and now Dan Mall has #dangoeswindows. Do I need to have my own hashtag? I didn't realize this was a thing. I guess I might as well do #snookgoeswindows. (Up next: dev environment!)
Mon, 03 Oct 2016 13:30:04 +0000I enjoy exploring an ecosystem. Last year, I spent a month with an Android phone and tablet to see how they compared to iOS. Now, I'm going to try something similar by switching to Windows as my primary machine. Dave Rupert went through a similar exercise. Microsoft was kind enough to offer up a Surface Book for this experiment. When the Surface Book was announced, lots of people gave it very positive reviews. I have a Samsung tablet from a few years ago when Microsoft was exploring what it meant for a desktop OS to also be a tablet OS in Windows 7. That Samsung tablet, however, was bulky, ran hot, and the battery ran down quickly. Ick. Initial Impressions My first hour or so with the Surface Book created mixed feelings. On the hardware side, this laptop is quite nice. The detachable screen becomes a tablet and is surprisingly light. The keyboard feels good. The trackpad feels good. This is a really nice laptop. Having a laptop with a touch screen is nice. For the most part, I use the keyboard where I can but sometimes a button press is easier to just hit with my finger. The trackpad finger gestures are nice and remind me of the handy gestures on the Mac. I enjoy the three-finger swipe to switch applications or to minimize all the apps. I do find the multiple desktop feature annoying. Mostly because it creates isolated app switching for each desktop. If the app you want to switch to is on the other desktop then you need to switch desktops and then switch apps. One particular thing that bugs me: the top row of function and media keys. There's plenty of room to have had a separate function key row and media row. Instead, there's a function key that has to be turned on or off to choose between them. I never use the function keys on my Mac but in Windows, I use them all the time. I have to consciously be aware of whether the key is enabled, which is more cognitive load than I would like every time I need to use a function or media key. Speaking of the media keys, I'd rather the ability to control screen brightness via the keyboard (which I do multiple times a day) than the ability to control the brightness of the keyboard backlighting (which I do almost never). Also, I find it weird that when the laptop is folded over, it doesn't fold flush. Instead, it looks like a book with a pen stuck in the middle of it. (Hence the name, is my guess.) On the software side, I'm having a tough time pinpointing the things that really bother me. I think a lot of it comes down to polish, which in a lot of cases, comes down to how well third party apps built their apps. For example, I'm writing this article in an app called WriteMonkey. It's a fantastic app for writing in Markdown. It runs full screen and gets out of the way. Love it. The Twitter app, on the other hand, sometimes blanks the screen before reloading messages. The Facebook app seems to have a different scroll sensitivity than the rest of the OS. Edge supports two-finger swipe to go back but nothing else does. And Mail seems to have its own text entry with a custom context menu and the shortcut to paste without formatting (Ctrl-Shift-V) is mapped to something else. Oh, and Messenger locks up quite frequently, requiring a restart. Of course, I'm sure I could come up with a similar list for the Mac. I've just been on it long enough to get over the annoyances. When Windows 7 first came out, it felt spartan to the point of feeling unfinished. Windows 10 definitely has a lot more polish. Also, the Cortana voice recognition seems to work really well. I can't tell you how many times I ask Siri for something and she completely gets it wrong. "Play my loved playlist." "Now playing Love Yourself by Justin Bieber." "Goddammit Siri!" The Cortana integration in the Start menu is really nice, too. I like the speed and design. It feels very natural to just hit the Windows key and start typing for what I want. It finds what I want accurately and quickly. Living on the Edge I want to use Edge as my default browser but the bigge[...]
Thu, 22 Sep 2016 20:37:47 +0000
I hear this question quite a bit lately. Our industry feels like it’s expanding exponentially with new techniques and technologies. People feel overwhelmed and unsure how to ingest it all.
I’ve found that I have 3 phases to my learning process:
I read a lot. I’ll click on links from Hacker News, Facebook, and Twitter. I’ll read about new techniques and new technologies and integrate those learnings into what I already know.
This is very superficial. With this knowledge, I can refer back to things if somebody asks about how to solve a particular problem. I couldn’t necessarily apply the approach myself yet but I have enough to know that a solution exists. That in itself can be quite useful.
From there, when I want to learn more about a given thing, I build something with it. Most recently, I wanted to learn about web beacons and took the time to make a beacon to see how it worked. I do this frequently. I’ll build small one-page apps to test out a concept. The exercise may take me anywhere from an hour to a week to build.
Building something expands my knowledge on a topic and now I can speak more authoritatively on the pros and cons of why and when you’d want to use such a technique or technology.
The last step is to write about it. This could be a blog post, a book, or a conference talk. When I write about a topic, I explore the edges of what I know, the edges outside of what I needed to initially implement the idea.
For example, it’s one thing to know that web beacons exist. It’s another thing to know how to implement them. It’s another thing to know the range and other limitations that exist.
In writing a blog post about
all:initial, I forced myself to test in every browser and discovered how inconsistent the implementation was.
It’s not necessary to go through this process for everything. You can stay at the superficial level for many things and only dive deeper when you need to, like implementing an idea on a client project.
Likewise, you don’t need to write about everything you work on. Writing is, for me, how I learn a topic more intimately. Not everything needs to be learned that deeply.
As your career develops, you’ll gain a sense of what things to explore sooner rather than later, or not to explore at all.
I have a list of things I’d like to explore—like progressive web apps, service workers, and web components—and when I do, I’ll go through this same process again and again.
Thu, 15 Sep 2016 14:46:00 +0000After hearing about the Physical Web through a second-hand tweet, I decided to look into what it is and why we want it. The Physical Web is essentially a way to broadcast a URL using Bluetooth (Bluetooth Low Energy or BLE, specifically). Devices can then listen for those beacons. The beacons can broadcast to a distance from a few centimetres away to possible 450 metres away. The Physical Web uses Eddystone, an open source beacon specification that Google proposed and is a competitor to Apple’s proprietary iBeacon technology. Google released Eddystone in July 2015. What’s the Frequency, Kenneth My initial reaction was “cool!” The practical applications of this could be quite numerous. For example, the web site shows a dog tag or a parking meter broadcasting. Stores could feature sales as you walk into them and have those broadcast directly to your phone. In Uri† Shaked’s overview of the Physical Web, he talks about being able to broadcast conference slides while doing a talk. Conferences could broadcast the day’s schedule. I could imagine going by a restaurant and being able to load up their menu via a beacon. Bus stops could broadcast maps and times. The QR Code of the Future Sadly, my mind quickly devolved into the annoyance of numerous notifications, like popup windows and other distracting adverts, vying for my attention. Imagine that same conference with companies pitching their wares or recruiters filling up your notifications. There could quickly be so many notifications as to make them near useless. Walking into a store, your phone buzzing with dozens of product sales, as companies pay for beacons and shelf space. The people behind the implementation of beacons at Google have worked hard to make sure they're not annoying. On Android, all beacons are wrapped up into a single silent notification. Essentially, you have to seek out beacons rather than have beacons nag you. Ultimately, though, beacons feel like QR codes. They’ll be all over the place and, for the most part, ignored. Priorities With the possible onslaught of beacons, some type of filtering or prioritization would seem ideal. Otherwise, I think most people would just rather choose to have beacons turns off, which wouldn’t really be of much use to those who use beacons. (Uri recognizes this issue in the comments of his article.) Trying them out Uri’s article does a great job of describing how to set up Beacons on your laptop or Raspberry Pi, and how to configure your iOS or Android devices to listen for them. Broadcasting a Beacon using Node On my Mac, I was able to broadcast a beacon with a couple easy lines: npm install --save eddystone-beacon node -e "require('eddystone-beacon').advertiseUrl('https://snook.ca/');" Of note, URLs need to be https. I tried specifying an http URL as a beacon and it couldn’t be found. I tried specifying an http URL that redirects to https and it could be found. I’m not sure if it’s the sender or the receiver that’s doing the double-check on the URL. (Also, you might have to use sudo to get npm to install everything correctly.) Listening to Beacons On iOS, add Chrome to the Today screen. You’ll be prompted to listen to Physical Web beacons. Don’t worry, you can disable it later. On Android, notifications will come up automatically. Da Bears I’m still bearish on beacons but I like the potential. I may try setting up beacons at upcoming conferences and workshops to see how well it works. † How cool is it to have a name like URI (Uniform Resource Identifier)?! Updated to point out that beacon notifications are silent.[...]