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?
- Copies the host RSA key to the EV3.
- Copies the setup files to the EV3.
- Copies a local ‘Scripts’ folder to the EV3. (If you don’t have one of these, comment out this line.)
- Sets up the RSA key. This allows you to ssh to the EV3 without needing a password each time.
- Installs the Python FTP library.
- Installs a simple FTP server.
- 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.
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.
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.
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!
- Remote Editing
- RSA Key for SSH
- FTP Server
- 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.
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?
$ sudo gem install rmate
Add this to your
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 firstname.lastname@example.org
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 email@example.com:/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
On the EV3:
$ mkdir ~/.ssh $ cat /tmp/id_rsa.pub >> ~/.ssh/authorized_keys
Even though I can edit files via
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
#!/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
Set up to start the FTP server at bootup
Add this script as
#!/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
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.
$ 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…
I was really looking forward to Apple announcing an iPad update this Fall. My iPad 3 was due for replacement, being heavy and slow due to the GPU being underpowered for the Retina display. Since the iPad Air 2 had been out for a year, I was waiting for its refresh/replacement model.
When Apple did not announce any new full-sized iPads, I was greatly disappointed.Sure, they announced a new iPad Mini, but I’d had a mini at one point, and missed the larger screen.
As time passed I started to give more and more thought to the iPad Pro that had been announced. Awesome screen. Great sound. Fast CPU and GPU. Huh.
The more I though about it and the way I tend to use my iPad, the more I thought maybe the Pro would work. So when ordering became available, I ordered one, and picked it up the next day at a local Apple store!
Here are my early impressions.
Yeah, it’s not small. But the large screen is terrific. In the same way the mini screen felt to cramped to me, the Pro screen feels better than the “normal” iPad screen. The device is a little heavy, but coming from an iPad 3, which is pretty heavy itself, it’s not bad at all. Admittedly not something you want to spend a lot of time holding up in mid-air, but resting own a lap or a table is more common in my experience anyway. If you are coming from an iPad Air or a mini, your opinion about the added weight may differ from mine!
Great. Very fast and fluid. Haven’t done much that really taxes it (e.g. gaming) yet, but for my normal everyday tasks performance is great.
Having an iPad with a Touch ID sensor is wonderful. I know this isn’t the first iPad to offer that, but it’s a new iPad feature for me!
The audio is impressive. Amazing sound from an iPad.
Split-screen multitasking. So so good. It took me less than a day to begin being annoyed by the apps that don’t support this feature yet. Being able to have two apps on the screen and active at the same time is a fundamental improvement in usability. Even though the pre-existing app switching functionality is pretty fast, not having to do it at all is a vast improvement in usability. Evernote in one pane for reference or not-taking with a browser or some other app in another pane is very cool. And by cool I mean “incredibly useful”.
I expect it to be transformative for travel. When we fly somewhere, the iPad becomes our major device for entertainment. TV shows and movies one the airplane, as well as in the hotel room.
Really looking forward to the larger screen for this purpose. And no more need for a Bluetooth speaker in the hotel. The audio from the iPad itself is plenty for watching video. And, I expect, for background music in the room.
Since the iPad Pro is treated like an iPad for purposes of airplane restrictions, it means that even though the screen is in the laptop size range we can use it during takeoffs and landings. And it can stay in my backpack through security.
I also expect the game of protecting a laptop screen from the suddenly reclined seat on the airplane to be eliminated by the iPad Pro as well. (I’ll admit I need to obtain the new keyboard cover and test this to be sure, but it seems like a reasonable conjecture.)
Combined with a hardware keyboard it should be able to eliminate the need for a laptop when traveling. I never got as much time to program when traveling as I thought I would anyway, and that’s about the only thing the iPad can’t do that the laptop can. And if the rumors of Xcode for the iPad Pro are true…
The Apple Pencil. The Smart Keyboard. Two things I don’t have. When I pre-ordered my iPad Pro, I foolishly thought it would be the hard-to-get item and the accessories would be readily available and I could grab them once I decided how the device itself was going to work for me. Oops. I have both on order, but by the time I decided to place those orders, the deliver time was 4-5 weeks out. Sigh.
I’ve heard nothing but good about the Pencil. So even though I’m in no way an artist, I want to take a look. I do like to sketch diagrams and such, so I’m hopeful it will be useful even for me.
I’m a little more uncertain about the keyboard/cover combo. If Xcode for the iPad ever does actually appear, then OMG yes yes yes. But since I’m not a writer, or even a rabid blogger, I don’t find myself typing that much on an iPad. I suspect that multitasking (and the larger screen) might change that equation a bit for me, but up until now I was much more of a “consumer” on my iPad than a creator.
But the laptop-replacement aspect of the device seems to be related to having a well integrated keyboard, so in for a penny, in for a pound.
Bottom line is I’m looking forward to trying them both!
And if the keyboard isn’t useful for me, it would be for my wife. Who does not have an iPad Pro. But if it is as useful for me as I think it’s going to be, it would be even more useful for her. So I’m expecting/fearing we might have to become a two iPad Pro family at some point. 🙂
Wonderful screen real estate, fast, enough space for multitasking to be comfortable. I love it so far.
At this point I have three apps on the Apple App Store. Dose Tracker, an app that allows you to track how many doses have been taken and how many remain of perhaps an inhaler.
Grounded, a silly app that lets you keep track of the “grounded” status of your children. And GrieveIt, a serious tool for labor professionals.
All three are in various states of neglect, due to my iOS development focus having been my full-time job as an iOS developer at Mellmo for the past several years.
So for those several years, I’ve been feeling guilty about not maintaining or improving these apps. From a financial standpoint, it makes no sense whatsoever. For inexpensive non-games with no advertising budget, the revenue is minuscule.
After giving this a lot of thought, reading blogs and talking with other developers, I think the time has come to remove most of these apps from the store. The one app that I feel I need to at least maintain is GrieveIt, so that one stays. But the other ones are going to go.
I’ll still feel guilty, but not as guilty as I feel about having outdated apps still for sale. And from a “portfolio” standpoint, those don’t really represent the state of the art, so they probably aren’t fulfilling that function either.
I think that marks the point where I clearly segregate my programming into two groups. Things that I do primarily to make money (i.e. my day job), and things I do for fun (my own iOS apps, etc.).
Yes, I know, GrieveIt falls in the middle, sigh. I’m toying with the idea of making it free, since it does help people do things I believe in. And by free, I mean truly free – no in-app purchases, no advertising. Free.
I’m still thinking about this. If I decide to invest some time to update it and add features, I might keep it in the theoretically money-making state. Or I might not – the whole effort to maintain even a simple “business” is a drag on my time and energy as well. (And if I don’t invest the necessary time and energy, then I pay in guilt, so…)
In summary: time to streamline!