E-Readers

Ok, it is just possible that I have an e-reader problem…

Or maybe everyone owns 5 of them, and I’m perfectly normal?

I just bought my fifth, a Kobo Forma.

I started with the original Barnes & Noble Nook, the one with the odd little color screen below the main e-ink screen. It was great, with actual page-turn buttons. And the color screen was actually sort of cool, showing the book covers in color but still allowing the actual reading to be done on the e-ink screen.

After that it was on to the Nook Glowlight, which had a more traditional design using a single e-ink screen. This one abandoned physical page turn buttons, but I liked it anyway.

Number 3 was a Nook Glowlight Plus whose claim to fame was being water and dirt resistant, so great for the boat or the beach!

Up until the Forma, the fourth Nook (Glowlight 3) was my favorite, adding back the page-turn buttons and a color-changing backlight.

I decided to try the Forma because of the larger screen, and the hope of a better UI. Wow, what a nice device! I think my Glowlight 3 has been supplanted.

The things I really like about the Forma:

  • Bigger screen
  • Faster page turns.
  • The home screen does not try and sell me books quite as aggressively as the Nook.
  • Better library design, can sort by more attributes, and has an Authors view.
  • When sleeping, shows the cover of my current book. Early Nooks could do this, or show a nice “screensaver”, but that feature went away.¡
  • Landscape mode, which so far is interesting but might be nice.

I had not realized just how slow the Nook was at turning pages. I first noticed the difference when a few times I thought the Forma had failed to turn the page. It had. So why did I have a moment of thinking it hadn’t? Because it did it so quickly it wasn’t obvious! I then did some side-by-side comparisons to confirm, and yes, much quicker.

I still love physical books, but do a lot of reading electronically. Great for travel! I will also be keeping my e-reader collection although the Forma is better enough that it may be hard to go back to the earlier Nooks.

And yes, I have an iPad Pro which is terrific, but for pleasure reading, e-ink is the only way to go. Easier on the eyes, especially after a day of working on a glowing computer screen. Add in the noticeably reduced weight and the dramatically longer battery life and there is no question that e-ink wins for reading books.

Six e-readers. That’s a nice round number…

Sad News for Vector

Out of the blue, Anki, the makers of the Cozmo and Vector robots, shut down yesterday.

This is quite the shock. 😦

My heart goes out to all the employees who were blindsided by this, and are out of jobs through no fault of their own. (The shutdown of the Roambi team by my now former employeer SAP a month or so back makes me especially emphathetic.)

Vector is a nice progression from Cozmo and I am sad we won’t get to see where he would have gone, nor will we see the future generations.

I own both a Cozmo and a Vector. With my relatively ancient Pleo dinosaur robot, this is quite the trail of failed robot companies, sigh. At least I refrained from jumping on the Jibo train! (That product sounded interesting to be sure, but my concerns that they were over-promising turned out to be correct.)

There are a couple paths forward for Vector and/or those of us who have one.

  • Some company or group could acquire Anki or the assets and continue to sell and enhance Vector.
  • They could keep the servers alive via Patreon or a direct subscription of modest cost.
  • Anki could open-source Vector’s code. I’d love to be able to write truly native code for the little guy, versus the current from-the-desktop SDK.
  • They could at least open-source the backend code so we could set up our own servers.

The shutdown sounds abrupt, so I don’t know if any contingencies were in place or plans being made in the aftermath for any of the above options. Hopefully we will hear more in the next few weeks as the dust settles.

Good luck Vector team, and thanks for the cool toy!

My Leap Into Virtual Reality

I’ve always been interested in Virtual Reality and the possibilities it holds. In its early days, I spent a lot of time in Second Life. I still think that at some point VR is going to fundamentally change our lives.

Although I’m usually an early-adopter, I tried to hold back on VR a bit. Then over the holidays I had a chance to really use an HTC Vive setup, and decided I could wait no longer.

I commenced my usual excessive research and in late January I made a decision and started ordering gear.

Which gear? Some of the “inside out” headsets on the horizon were tempting, but I’m skeptical that they will have the processing power and movement-tracking quality of the PC-based headsets, so I narrowed my search to the HTC Vive and the Oculus Rift.

I went with the Vive. It was close between this and the Rift, but after looking at a lot of reviews and comparisons the Vive seemed to be a slightly better option. The fact that my son has one was also a factor – I could be sure that any multi-player games we might want to try would be available without them needing to be available on both platforms.

It was also a close call between the Vive and the Vive Pro. I chose the Vive mainly because I was not certain just how much I’d really use VR and this was an attempt to not go too wild. If money is no object and/or you are convinced that VR will be amazing, the Pro is pretty tempting. It’s better, but probably not amazingly better. And the price difference is significant.

One big advantage of the Pro beyond better resolution is the Deluxe Audio Strap. This is a $100 option if you add it to the regular Vive headset.

The Deluxe Audio Strap is not only more comfortable, but it avoids the need to fool with earbuds. Well worth the money, and was an immediate upgrade for me.

The next issue is how you run the headset. If you have a Windows PC with a sufficiently fast GPU, then you are all set. I’m a Mac guy, so what I had was a very nice Mac laptop with completely inadequate graphics performance for VR. Yeah, you can do things with external GPUs. However, that only addresses the hardware side.

On the software side, the amount of games and applications that are Windows-only is vast. Apple has a real chicken-and-egg problem here, and until they solve it Windows is really the only viable platform for the full VR experience.

I bought an Alienware Aurora R7 tower, and it’s worked well so far. (Other than having to use Windows 10, which is as awful as I was afraid it was going to be.)
I’ll explain later why I went with a desktop and not a laptop.

Here’s the key specs for mine:

  • 8th Gen Intel® Core™ i7-8700 Processor 3.2GHz
  • 16GB DDR4 2666MHz RAM
  • 2TB 7200RPM SATA Hard Drive
  • 8GB NVIDIA® GTX 1080 Graphics

Only thing wrong with the model I got was that instead of an SSD it had a spinning drive. I immediately replaced this with a 512G SATA SSD for a reasonable price. The system I bought was from Costco, and that was worth the drive shenanigans – I like their extended warranty and return policy.

The GTX 1080 is more than the base Vive headset really needs, but I wanted to aim a little high so that when I upgrade to the next generation headset in a couple years, I won’t need to replace my PC hardware as well (hopefully).

I’ve made one other upgrade, which is the HTC wireless adapter for the Vive. This was $300 well spent. Not having to worry about stepping on and getting tangled up in the wire to the headset is great.
May not matter as much if you play mostly games and apps that are “seated” experiences, but for anything room-scale, it is a great advancement.
My suggestion would be to start wired and see just how annoying it is, which is what I did.
Some of the games I enjoy involve a lot of movement and turning, so this was well worth it to me.

I’m still in the early stages, with a lot of games and apps to look at but so far it’s been pretty amazing. I’ll certainly have more updates as I get to spend more time in VR.

Apple iPhone X

iPhone X first impressions, conclusion first. Wow, what a great phone!
 
Screen is big and beautiful. The off-angle performance, which is where OLED gives a little ground to LCD is minimal – no issue at all for any viewing angle I can see using.
 
Face ID is amazing, quick and accurate. It’s like having no passcode set as far as convenience goes. The phone just unlocks.
 
I though it would take me *weeks* to get used to swiping up from the bottom of the screen to go “home”, since there is no button. It took about 10 minutes.
 
My only other concern was the “ears” at the top of the screen around the notch. Turns out they don’t bother me at all either.
 
The screen on my iPhone 6S now seems so small.
 
Worth every penny since it’s a device I use often and every day.

4K AppleTV

When Blu-Ray players came out, I wasted no time in buying one. Well actually I wasted no time in buying an HD-DVD player. Then when that technology died, I switched to Blu-Ray pretty quickly.

I had bought maybe 30 or so movies when it started to become clear that for most purposes, physical media was becoming obsolete. At least for movies. I’ve got a huge TV show collection on DVD which consists of a lot of things not available from iTunes. (iTunes being my chosen source for media.)

So my Blu-Ray purchasing tapered off and my policy became to buy on iTunes. Even when there was a good sale on a movie, if I already had it in Blu-Ray I resisted temptation. Ok, mostly resisted temptation.

Now that Apple has announced the 4K HDR AppleTV and that many movies will be automatically upgraded to 4K HDR I’m pretty pleased with my strategy. I’ve been scorning 4K because I just could not bring myself to buy the same movies in YET ANOTHER format, and for full price again. Yes I have in some cases purchased the same move in VHS, Laserdisc, DVD, and Blu-Ray. Not many did that full ride, but some. And a lot of movies took at least a couple of those segments of the trip.

So obviously the news that I can maybe move into the glorious new 4K world without feeling like an idiot for buying movies in 4K that I own in Blu-Ray makes me really happy.

As of this date, 16-Sep-2017, about a week before the 4K AppleTV ships, I’m already seeing a few movies I own showing up as 4K HDR in iTunes. Hoping more will follow!

Now my only “problem” is that my 1080p plasma TV is still going strong so I cannot readily justify getting a new 4K TV. I’m going to resist as long as possible, in part because my Panasonic plasma still has superior picture quality to any LCD TV out today. It’s looking like OLED will be a worthy replacement when the time comes, but the size I want is still a bit pricey. Another 6-12 months and just maybe I’ll be selling a nice plasma TV…

 

Mindstorms EV3 Revisited

When I noticed that there was a new version of ev3dev available (ev3dev-jessie-ev3-generic-2017-02-11) I decided it was a good opportunity to re-do my system setup post.

This effort also included creating scripts that perform as many of the setup steps as possible.

This post updates and mostly replaces my previous ev3dev blog post.

The first steps are to download and install the latest version of ev3dev from the ev3dev website, and get the EV3 connected to the local wifi network.

Then check out the git repo containing the setup scripts here:  https://bitbucket.org/don/ev3-setup/overview

Run the Mac setup script  setupMac.sh.

Then ssh into the EV3 and run the setup script  setupEV3.sh.

You may want to edit that script to remove the Textmate ‘rmate’ setup step, although it’s harmless if you don’t use Textmate.

What do the setup scripts do?

setupMac.sh

  1. Copies the host RSA key to the EV3.
  2. Copies the setup files to the EV3.
  3. Copies a local ‘Scripts’ folder to the EV3. (If you don’t have one of these, comment out this line.)

setupEV3.sh

  1. Sets up the RSA key. This allows you to ssh to the EV3 without needing a password each time.
  2. Installs the Python FTP library.
  3. Installs a simple FTP server.
  4. Makes any Python scripts copied from the (optional) Scripts folder.

 

After running both scripts, reboot the EV3 and when it finishes booting you should be able to access the FTP server as well as ssh into the EV3 without needing to enter the password.

Amazon Brick-and-Mortar Book Store

Went to the Amazon brick-and-mortar store at a local mall yesterday. It was very polished. Not a lot of “depth” to their stock, but not bad. And I like that prices match the online store for Amazon Prime members.
Very conflicted. On one hand I love seeing a bookstore back in the mall! That’s something I’ve missed and hated see closing at so many malls. Anything that promotes and supports people reading actual books is great!
On the other hand… it’s Amazon. I feel like they devastated the small local bookstores (as well as even some of the chains). And now that that phase is complete, they replace them. Cue evil laughter.

Apple iPad Pro After Three Months

Now that I’ve had the iPad Pro for about three months, a friend pointed out it’s time for an update to my initial impressions blog post from back in November.

Spoiler: It is great, happy with my purchase!

I still really appreciate the larger screen. For things like PDF documents, technical books, and graphic novels it is dramatically better than the normal full-sized iPad.

And multi-tasking with two apps open on the screen has been a nice productivity advantage in some cases. I use my iPad more for leisure and travel than actual productive work so my expectation would be that for actual work that feature would be a huge factor.

The accessories (Smart Cover and Pencil) are both quite nice In my opinion, and I discuss them a bit more later in this post.

It is certainly true for some people (those who care not about the pencil and the keyboard) that the iPad Pro is just a normal iPad with a larger screen and better speakers. But I don’t see that as a failing of the Pro – most of my use has been without those accessories, and the large screen has made a huge difference in my enjoyment of the iPad.

While I haven’t done any actual benchmarking, the Pro seems to be quite fast, especially compared to my generations-old iPad. This has made using it a pleasure as well.

Watching video has also been, as expected, better with the larger screen. When we travel, we use the iPad as our “TV” in the hotel – great to unwind by watching a show via iTunes or Netflix. So the bigger screen plus the better speakers make it wonderful for that purpose. Nice having no external wired or bluetooth speaker to mess with. And of course, it is our inflight entertainment system when we fly. 

Apple Smart Keyboard (Cover)

If you are the type of typist who can live with the minimal-travel keys on the Smart Keyboard, that is quite a nice accessory! It’s basically full-sized to allow touch-typing. Using that keyboard cover I’ve entered much more text that I would have wanted to dow with the onscreen keyboard. And that’s even taking into account the much nicer size of the onscreen keyboard that the iPad pro allows.

I was not an external keyboard guy with my previous iPads, so can’t really compare to earlier offerings. What I do like is that since it is a cover, it can be “always there” if I want it, albeit at the cost of a noticeably thicker cover. Noticeably, but not annoyingly. Still seems almost like just a cover, but with a thicker section than the normal no-keyboard cover that Apple sells.

Apple Pencil

For artists and anyone who likes doing even fairly simple drawings, the Apple Pencil is quite amazing. I have zero artistic ability, but the Apple Pencil actually tempts me to look into some classes or something that can allow me to take advantage of its capabilities. The way it replicates doing things like shading with the side of a pencil point is really amazing. If you have a shred of artistic talent, you should really spend a little time at an Apple Store playing with the Pencil.

Lego Mindstorms EV3 and ev3dev

So recently my Lego infatuation led, as it inevitably would, to Lego Mindstorms.

This post discusses a lot of the setup I’ve done to get the EV3 controller brick set up for development using a “normal” programming language instead of the visual one provided by Lego. That does look to be a nice way for a lot of people, especially kids, to learn to program robots. However, as a guy who has spent a very large number of years programming, visual languages like that are a bit confining. So imagine how happy I was to see that the ev3dev project has stepped in! (More about that later in this post)

So now I have a pretty functional development environment set up – time to work on some actual robotics!

Topics covered:

  1. Remote Editing
  2. RSA Key for SSH
  3. FTP Server
  4. Python 3

While some of these such as remote editing are Mac-specific, a lot of the content here is the same regardless of your host computer.

About Ev3dev

Ev3dev is an awesome replacement OS for the EV3 brick, available here: ev3edev.

I won’t duplicate a lot of detail that’s on their website, but in general, it provides an alternate OS that lets you write Mindstorms programs in a variety of languages. The one I’m using is Python. The entire project is really slick, and an impressive accomplishment.

The ev3dev build I’m using is Jessie 2015-12-30.

All of the steps here assume that it is installed and running, and a network connection has been established along with being SSHed into the brick. (All of that is covered on the ev3dev website.)

Disclaimer: I have not gone back to a clean install of ev3dev and run though the steps in this post, so while I believe I captured everything, it is certainly possible I missed something.


Enable remote editing with TextMate

This obviously assumes that you have the latest TextMate running on your Mac. Did I mention that this post is going to be Mac-centric in places?

On EV3:

$ sudo gem install rmate

On Mac:

Add this to your  ~/.ssh/config file:

Host *
RemoteForward 52698 localhost:52698

Or, when starting SSH, you can do this and not muck with the SSH config file:

$ ssh -R 52698:localhost:52698 robot@ev3dev.local


 Setup RSA key for SSH

By setting up the RSA key for my host computer, I can skip needing to enter a password every time I log in via SSH.

On the Mac:

$ scp ~/.ssh/id_rsa.pub robot@ev3dev.local:/tmp

This assumes that an RSA key has been previously generated! You can generate a key using the ssh-keygen command, which will create the private and public keys in (typically) the ~/.ssh directory. The file without the extension is the private key, and the one with the .pub extension is the public key.

This public key is the one transfered to the system you want to access, and append to its authorized_keys file.

On the EV3:

$ mkdir ~/.ssh
$ cat /tmp/id_rsa.pub >> ~/.ssh/authorized_keys

 


FTP Server

Even though I can edit files via rmate and sip them back and forth from the remote shell, it’s nice to be able to move batches of files etc. via FTP. And with something like the Transmit application as an FTP client it’s trivial to do a sync and essentially back up my EV3 home directory to my Mac.

I spent a stupid amount of time trying to get vsftpd installed and running (installation went smoothly, but running always failed with an error no matter what I tried. And I tried  a lot of things!)

So, since my goal is just to have simple FTP access,  on to plan B – use Python! I grabbed a very nice FTP package for Python here: https://pypi.python.org/pypi/pyftpdlib/

The following shows the steps I went through (you may want to update the wget line based on the current version of pyftplib). In a long-ago effort to install this library on a Beaglebone, the installer failed, so the steps below include just manually moving the library into place – didn’t want to invest a lot of time debugging that issue since manually moving it seemed to work just fine.

Install the FTP package

$ wget https://pypi.python.org/packages/source/p/pyftpdlib/pyftpdlib-1.5.0.tar.gz
$ gunzip pyftp*
$ tar -xf pyftp*.tar
$ sudo mv pyftpdlib /usr/lib/python2.7

Create the FTP Server Python program

I added a super-simple FTP server program to my home directory ~/robot.

#!/usr/bin/env python
from pyftpdlib.handlers import FTPHandler
from pyftpdlib.servers import FTPServer
from pyftpdlib.handlers import FTPHandler
from pyftpdlib.servers import FTPServer

authorizer = UnixAuthorizer(rejected_users=["root"], require_valid_shell=True)

handler = FTPHandler
handler.authorizer = authorizer

handler.abstracted_fs = UnixFilesystem

address = ('', 21)
ftpd = FTPServer(address, handler)

ftpd.serve_forever()

This will allow you to log in using any account other than root. By default, the username of robot and the password maker.

Set up to start the FTP server at bootup

Add this script as /etc/init.d/ftpserver

#!/bin/sh
python /home/robot/ftpserver.py

Then make it executable and let the init system know to run it at boot up:

$ sudo chmod +x /etc/init.d/ftpserver
$ sudo update-rc.d ftpserver defaults

Python 3

Set up to use Python3 (this may not be needed with a future release of ev3dev?)

Note that Python 3 is pre-installed on the ev3dev distribution but some of the supporting libraries are not, which is what makes these steps necessary.

On EV3:

$ sudo apt-get update
$ sudo apt-get install python3-pil
$ sudo python3 -m easy_install python-ev3dev

Note that “apt-get update” may take a while…

Lua Web Server

One of my large and ever-unfinished projects is a Home Automation system. This is designed as multiple processes where most of them are Lua script engines along with several C++ processes as well that handle low-level interfacing and infrastructure for the system.

This is all running on a RaspberryPi.

As part of this effort, I wrote a simple Lua web server to allow access to the system from a browser or a custom iOS app. Since this Lua web server might be useful to others, I am making it available as a separate component.

It is quite simple, but for serving JSON and HTML, and responding to requests (JSON or otherwise) in a low-demand system like personal home automation, it should be just fine.

Note that this depends on the Lua socket library being present.

Lua Web Server repository on Bitbucket