so many operating systems, so little time

Sometimes you need to do many things with the same hardware. Say, for example, you might need both Windows 10 and a Linux-type of operating system on the same computer. Here are some of your options for this.

You might say, “why would I want that?” There are times when you want to try out something new. You might need to test software compatibility with something you don’t have currently. You might purchase some new software or a printer which isn’t compatible with your current setup. Or, like me, you might be endlessly curious about the possibilities. You might want to create a smartphone app and need to see how that looks on a variety of phones.

Boot from a “Live” media

In this case, you have Ubuntu on a CD or on a USB thumb drive. You boot to this media and select the live option from the menu (“Try Ubuntu without installing”). You then get a Desktop experience running Ubuntu (Linux) on your existing hardware and you don’t even have to install it in the classical sense. Once you shutdown this system and remove the media, nothing whatsoever has changed on your original hard drive.

TryUbuntu

I’ve used both methods (CD and USB) and will attest that the latter will boot up faster than anything you’ve seen before, I’d guess.

Pros:

  • It’s very fast to boot this way from the USB drive.
  • You can try another operating system without making any changes whatsoever to your existing computer.
  • It makes short work of hacking a Windows-based computer if you don’t know the password(s) and accessing the files on its partitions.
  • It seems to be wonderfully compatible with a variety of computers and laptops without fussing with drivers.
  • Each session takes advantage of all the available RAM.

Cons:

  • Unless you change the defaults, any changes to your Desktop and configuration are lost upon restarting this session.

Set up two partitions and select one upon startup

In this case, you shrink the size of your existing hard drive’s partition to make room for another operating system.  You then install the new operating system to this second partition.

Upon restarting the computer, you then select which partition (operating system) you’d prefer.

GRUB

This technique is often called “dual booting”.

Pros:

  • The settings you change will be saved from one session to the next.
  • In many cases, you can access files on the other partition(s) if you know where to look.
  • You can take advantage of fast hardware like that on an Apple computer to use other operating systems like Linux.
  • Technically, you could install Windows 7 on one partition and Windows 10 on another.
  • This technique can be extended to many operating systems on many partitions.
  • Each session gets all the available RAM.

Cons:

  • You have to reboot in order to get back to the other operating system to use its tools and software.
  • In the case of OS X, major version upgrades usually try to overwrite the menu at the beginning which would normally allow you to select the other partitions. It’s almost as if Apple doesn’t want you to do this and breaks things on purpose, of course. If you’re technically-minded, you can fix this each time however.

Set up a virtual manager (VM) and “spin up” an operating system

This seems to be the preferred and newest method these days. You run a virtual machine manager, create a virtual computer using this technique and then install the new operating system to this.

QEMU

You then boot up the virtual computer and you see this as a window on your Desktop.

XP

Pros:

  • You can copy/paste from a Windows application into a Linux session’s Terminal session or any similar combination of from/to.
  • For demonstrations, you can easily show that something works with multiple operating systems (without rebooting or bringing multiple laptops).
  • Depending upon how much hard drive space, RAM and processor speed you have, you could potentially run several virtual machines at once.

Cons:

  • Technically, it’s the most challenging of the various options and the learning curve is steep.
  • It may require more RAM memory than what you currently have for this to run well.

Progress so far

I have plenty of experience using the first two methods above (live- and dual-boot) but have recently been working with the VM option, as described below.

Dual-boot MacBook

I’ve setup my MacBook Pro to boot both OS X and Ubuntu. It seems to work great so far. I hope to next setup a VM so that I can emulate a Raspberry Pi computer within the MacBook itself (for development purposes).

HP Laptop

I’ve setup my HP laptop to boot Ubuntu and have added a VM which has Windows 10 loaded in it. Remarkably, the Windows 10 install actually works better than the original (native) installation on this laptop.

Multi-boot Raspberry Pi computers (IoT re-purposing)

Since the Raspberry Pi (3 and Zero) computers have an easily-replaceable microSD card in them, I now have a small library of different images with which I may boot any individual computer. It’s just important to label each to avoid confusion.

So I might pull the microSD card for the robotic tank project out of a Raspberry Pi, replace it with the card for the closed ecosystem or for a different project altogether. Once it boots, it’s now a completely different computer, if you will.

microSD

Multi-boot 3D printer

Technically, the Robo C2 printer has a Raspberry Pi computer inside so it makes it easy to boot to different versions of the software. This is useful when you’re modifying things to add on new features, for example.

Smartphone software on a workstation

I’ve also had the opportunity of installing Android on a standard Dell Vostro 200 desktop computer. (It’s good for testing software and websites.)

Cloud-based alternatives

There are entire services available at Microsoft, Amazon and presumably Google in which you “spin up” a virtual computer and remote into it.

Amazon’s offering is called EC2 and I’ve had the opportunity to use it in the past. In the span of two hours, I was able to spin up or “instantiate” a virtual SQL Server in a datacenter somewhere, to upload a corrupt database, fix it there and then to download it back to me. I then killed that virtual server. The total cost was something like $4 to “borrow” their virtual hardware for a couple of hours. Compare this to the cost of purchasing an actual server, paying for Microsoft licensing, waiting for everything to arrive, setting it up, etc. I literally saved thousands of dollars with a service like this.

Microsoft’s offering is called Azure. I can’t say that I’ve used it yet but it works essentially in the same way that EC2 does: define an instance, spin it up and remote into it.

Looks like Google’s offering is their Compute Engine. It sounds like they’re trying to play “catch up” to both Amazon/Microsoft on this one.

There’s another player in this space, MacInCloud.com appears to be offering remote sessions into what are likely discreet/physical Apple computers. For all practical purposes, it would likely behave like a virtual computer might.

Private cloud

And finally, I had the opportunity to re-purpose about eight Dell Vostro 200 computers from work into a MaaS (metal as a service) private cloud. The underlying layer of software which did the cloud part is called OpenStack which allows you—like Amazon itself perhaps—to be the host for spinning up virtual servers.

It takes a lot of work to get the initial one or two computers running for this. But then, using a concept called Juju charms, you select what are essentially recipes of things to install which have complicated inter-dependencies and it seems to make it all work for you. Seeing these things run is pretty impressive given that this is in the free, open-space world.

The future

It’s hard to guess what’s next in this series of events. We may soon be running a VM with Windows 10 on a wearable single-board computer like the Raspberry Pi 3 or similar. In theory, then, you might wear a pair of Google Glass(es) or the Microsoft HoloLens which would interface with the Pi computer via Bluetooth. Given the lack of a keyboard, presumably the interface might be like the Amazon Echo/Alexa service: you ask for something, the system must recognize the command, submit it to a server and display the results or iterate through them via voice.

And yet, given the augmented reality (AR) side of things, you might say “keyboard” and a virtual reality keyboard could appear on the physical horizontal space in front of you and you just “type” on an imaginary keyboard to input data.

The interfaces could evolve to project these virtual keyboard-type interfaces onto an imaginary glass wall in front of you, much the same as you see in sci-fi movies these days. These glass-like devices probably would incorporate an outward-facing camera to catch and interpret your hand movements into discreet commands like typing, page-forward, scroll-down, dismiss window, etc.

GoogleGlassHololens

Advertisements

j.a.r.v.i.s.

Imagine being able to have a conversation with your 3D printer much in the same way that the Tony Stark character of Iron Man did with his butler-esque virtual companion J.A.R.V.I.S., as voiced by the very talented Paul Bettany.  How cool would that be?

jarvis

So I thought I’d work on an upgrade to my Robo C2 printer to add this capability.

Amazon Echo (Alexa)

Fortunately, Amazon has a product called Echo with an underlying personality & service named Alexa. Since they’ve made the source code and service available to developers, I’ll be using this to get started. For the commercial product, you’d say “Alexa…, what’s the local weather?”, perhaps and she might “read” a brief report for you. And by “read”, I mean:  “a text version of the weather report queried response would be rendered into sound using a female’s voice and played on a speaker”. (We love to anthropomorphize these things now that computers are getting so smart.)

Raspberry Pi

The Robo C2 printer has a Raspberry Pi 3 inside and I’ll be incorporating this into the project; I’m fairly familiar with how this computer works.

Since the price of the official Amazon Echo is about $100, this strikes me as being too expensive since all I really need is a single board computer, a microphone, a storage card and a battery. The Raspberry Pi Zero W fits that description and weighs in at a mere $10.  Technically, I’ll also need a speaker but since I’ve just upgraded the Robo C2 with sound events then I intend to push my generic Echo’s sounds over to the printer to play them there. This will help in the illusion that I’m talking to someone/something “over there”.

Wake Word

The Echo technology out-of-the-box recognizes the spoken word “Alexa” so that it might then attempt to turn your subsequent spoken commands into something recognizable, a “skill”. I’ll be updating it to recognize the spoken word “Jarvis” instead.

Custom Skills

Beyond the included skills, the service allows new user-defined skills to be created and then they’re part of Alexa’s talents, if you will. I shall be creating custom skills so that I might then do a number of tasks with the printer, hopefully to include sending a new job to print. It would also be good to know the status of an existing job without necessarily reading any of the available displays/consoles for this information.

From what I understand, these new skills are a collection of intents and utterances with optional slots as variables.

OctoPrint

The underlying printing software behind-the-scenes on this printer is called OctoPrint. It’s suggested that it’s already compatible with Alexa so we’ll see if that’s accurate.

Size

It should be rather small and handheld. The board itself is about the length of three quarters. I have two different microphones for this—I’ll try to use the smaller of the two. Initially, I’ll use a barrel type of USB charger but I’ll then knock that down to a smaller style when that’s working. I’ll likely solder the accessories if they seem to be happy. And then finally when I’ve settled on the accessories and such, I’ll design and print an enclosure for it. I may or may not include a wake-up button.

PiZero

Custom Voice

I would like to replace Alexa’s voice personality with sound events from the J.A.R.V.I.S. movie character. I’ll see what it will take to make this happen. By keeping his responses to a few generic ones, I might just replace the outbound render-to-text routines so that they just pull from the stock responses as recorded and stored.

Progress

  • The sound event upgrade is now on the printer (imagine a Robo C2 printer making R2D2-like sounds to let you know when something has occurred)
  • I have all the parts I need for Jarvis
  • I’ve created a developer’s account on Amazon and have created my Alexa service for Jarvis
  • I have the Raspberry Pi Zero W computer’s operating system installed
  • The AlexaPi source code is installed and the service is running
  • The microphone appears to be working as expected
  • I need to read through the various tweaks required since I’m running on a Raspi Zero instead of a different version
  • Re-purpose the onboard LED on the Pi to work for the voice recognition notification
  • I need to install the new wake word for “Jarvis” instead of “Alexa”
  • I need to create one or more skills for things I need the printer to do like report status, turn off/on the webcam or to start/stop a job
  • Record and store patterned responses from the Iron Man series of movies to be played on the Raspi 3

 

time-lapse photograpy for the robo c2

I’ve upgraded the Robo C2 printer with a nifty Raspberry Pi NoIR camera so that it can take photos, stream video and do time-lapse photography of print jobs. It seems to work great so far and I look forward to putting it through its paces.

And to make this easier for others, I’ve created a documentation repository with step-by-step instructions for anyone else who wants to modify their original printer to do this, too.

Okay, so technically the printer had a glitch 1/3 of the way into printing this (huge) coin example, so I aborted as it started to go funky at some point… which you can’t tell here, tbh.

When printed part becomes modern art

a robot which builds robots

I suppose the problem with buying a 3D plastic printer is that it makes the owner imagine all sorts of modifications to that very same printer, especially so when it’s largely open-sourced in the first place.

robo

I must admit that owning this Robo C2 printer has been a blast. I’m now past the let’s print some demos phase to the let’s print our own designs next step. And part of that design process is envisioning a better printer from this one. And what better way to modify it than printing some 3D parts, right?

So, here’s a list of some of the current things I’m doing with it.

Sound Events

It’s a wonderful printer and often, just because of the sounds you get from its collection of servo/stepper motors, it vaguely sounds a bit like R2D2, the cute robot of Star Wars fame. I’m working up a modification to add sound events from a variety of Star Wars WAV files related to R2D2.

As themes go, the movie Iron Man includes an AI character named J.A.R.V.I.S. (as voiced by Paul Bethany) who had some fun dialog with the Tony Stark character (as played by Robert Downing, Jr.) I’ve often thought that it would be sweet to add a sound event theme set based around Paul Bethany’s voicing of J.A.R.V.I.S. as well.

Video Feed and Time-Lapse Photography

I’ve just picked up a Pi NiOR camera which I’ll be adding to the printer. Next, I’ll need a longer ribbon cable, some suction cups and a designed/printed part to hold the camera itself inside the chassis.

Given the resolution of the camera, I’ll likely need to upgrade the microSD card inside to accommodate the files from the streaming activities.

Enhanced Spool Feeder

The out-of-box spool feeder seems a bit minimalistic to me. I’d like to upgrade that with a feeder which allows the spool to spin more freely. I imagine that the part needs to be more rounded at the top.

Heated Bed

The Robo C2 doesn’t include a heated bed in its design like some of its more-expensive Robo alternatives. So I’d like to machine an aluminum bed with a heating element and add this to the system.

Side-to-side Conveyor Bed

The maximum build size for the Robo C2 is a mere 5″x5″ square at the base so that’s a bit restrictive. There are techniques for joining a series of smaller parts (say, to make a sword) but I’m guessing that a possible approach is to remove the two blue side windows and rig up a conveyor system which is accurately positioned left/right as required. In this way, a very long part could be printed.

Remote Control via Joystick

I’ve purchased a Raspberry Pi Sense Hat which includes a small joystick control. I think I’d like to write something so that, using remote GPIO, I could then control the stepper motors of the printer indirectly via wi-fi.

OctoPrint Plugins

The underlying web server which runs on the printer is called OctoPrint and since it’s open-source, there are a variety of plugins for this already. I think I’d be interested in writing some plugins, especially so that someone may pause jobs in the middle so that internal components may then be assembled inside.

I’ll likely add some SMS notifications so that I can remotely know how a print job is going.

Voice Control

I also like the idea of adding voice control to the printer. How awesome would it be to just tell the printer to do something?

So basically, since the Amazon Alexa code is completely available and can be setup on a Raspberry Pi 3 computer, I can imagine then interacting with this piece (as installed on a Raspberry Pi) and having it direct activities on the printer itself.