kyrofa's blog

Call for testing: Nextcloud snap v11.0.3snap3

We're getting ready to release a new version of the Nextcloud snap. v11.0.3snap3-rc1 is now in the candidate channel: . . . (more)
Kyle

No comments

ROS production: behind the scenes

I'm an engineer, and am pretty clueless when it comes to film-making. However, I've been asked by a few different people how I made the ROS prototype to production on Ubuntu Core video series. While I'm not deluding myself into thinking I'm a pro, I'm happy with how they turned out, and they were made on a shoestring budget with open-source software. This post is for those who are curious about what I did, what I used, and how I did it. . . . (more)
Kyle

2 comments

Call for testing: Darktable v2.2.4snap1

The Darktable snap (darktable-kyrofa) is terribly out-of-date. I'd like to bring it up to the latest release, but I could use your help verifying that things still work. If you're a photographer, particularly if you have some experience using Darktable, mind putting it through its paces? v2.2.4snap1-rc1 is in the candidate channel: . . . (more)
Kyle

No comments

Call for testing: Nextcloud snap v11.0.3snap2

We're getting ready to release a new version of the Nextcloud snap with a few new features, including: . . . (more)
Kyle

No comments

ROS production: create an Ubuntu Core image with our snap preinstalled [5/5]

This is the fifth (and final) blog post in this series about ROS production. In the previous post we created a gadget snap to allow confined access to the Turtlebot. In this post, we're going to put all the pieces from this series together and create an Ubuntu Core image with our ROS snap preinstalled, ready to send to the factory for production. . . . (more)
Kyle

No comments

ROS production: obtaining confined access to the Turtlebot [4/5]

This is the fourth blog post in this series about ROS production. In the previous post we created a snap of our prototype, and released it into the store. In this post, we're going to work toward an Ubuntu Core image by creating what's called a gadget snap. A gadget snap contains information such as the bootloader bits, filesystem layout, etc., and is specific to the piece of hardware running Ubuntu Core. We don't need anything special in that regard (read that link if you do), but the gadget . . . (more)
Kyle

No comments

ROS production: our prototype as a snap [3/5]

This is the third blog post in this series about ROS production. In the previous post we came up with a simple ROS prototype. In this post we'll package that prototype as a snap. For justifications behind why we're doing this, please see the first post in the series. . . . (more)
Kyle

6 comments

ROS production: our prototype [2/5]

This is the second blog post in this series about ROS production. In the previous post we discussed why Ubuntu Core was a good fit for production robotics. In this post we'll be on classic Ubuntu, creating the example ROS prototype that we'll use throughout the rest of the series as we work toward using Ubuntu Core. . . . (more)
Kyle

No comments

From ROS prototype to production on Ubuntu Core [1/5]

My background is pretty heavily littered with robotics. A natural side effect of this is that I've published numerous posts discussing snaps, Ubuntu Core, and different robotics frameworks (ROS and MOOS specifically). But my robotics experience was professional, which meant I didn’t really have a reason (or money, these things can be expensive) to buy any robotic systems personally. As a result, most of my posts have been pretty high level. Well today, that changes. Today, I have this. . . . (more)
Kyle

6 comments

Distributing a ROS system among multiple snaps

One of the key tenets of snaps is that they bundle their dependencies. The fact that they're self-contained helps their transactional-ness: upgrading or rolling back is essentially just a matter of unmounting one snap and mounting the other. However, historically this was also one of their key downsides: every snap must be standalone. Fortunately, snapd v2.0.10 saw the addition of a content interface that could be used by a producer snap to make its content available for use by a consumer snap. . . . (more)
Kyle

No comments

ROS on arm64 with Ubuntu Core

Previous Robot Operating System (ROS) releases only supported i386, amd64, and armhf. I even tried building ROS Indigo from source for arm64 about a year ago, but ran into dependency issues with a missing sbcl. Well, with surprisingly little fanfare, ROS Kinetic was released with support for arm64 in their prebuilt archive! I thought it might be time to take it for a spin with Ubuntu Core and its arm64 reference board, the DragonBoard 410c, and thought I'd take you along for the ride. . . . (more)
Kyle

4 comments

Snap updates: automatic rollbacks

When researching snaps, one of the main advantages everyone talks about is the fact that they're transactionally updated. That is, an upgrade either succeeds or fails, it doesn't leave the snap in a broken state. If you have snap A installed and an update for it is released, it'll automatically update. If that update is somehow broken, the snap will roll back to the previously-working revision. However, no one has really talked about how that works. How does a snap know that an update is broken? . . . (more)
Kyle

2 comments

Ubuntu Core on VirtualBox

If you read the official Ubuntu Core docs, you'll see that the recommended way to run Ubuntu Core virtually is with KVM. However, it's probably even easier to use it in VirtualBox, and I've been getting some questions about that, so I wanted to devote a quick post to it. . . . (more)
Kyle

No comments

Snapping Nextcloud: Nextcloud itself

In the previous post of this series, we discussed the process of and lessons learned from building Redis for the Nextcloud snap. That means we've covered all the major pieces except for Nextcloud itself, so for this post that's what we'll focus on getting that into the snap. . . . (more)
Kyle

4 comments

Snapping Nextcloud: The memcache

In the previous post of this series, we discussed the process of and lessons learned from building MySQL for the Nextcloud snap. The last piece of infrastructure we need to introduce is the memcache, for which we'll use Redis. Nextcloud supports a number of memcache backends; I chose Redis because it can provide both a local cache as well as file locking, so for this post that's what we'll focus on getting into the snap. . . . (more)
Kyle

No comments

Snapping Nextcloud: MySQL

In the previous post of this series, we discussed the process of and lessons learned from building PHP 7 for the Nextcloud snap. Nextcloud supports a number of databases, but they recommend MySQL, so for this post that's what we'll focus on getting into the snap. . . . (more)
Kyle

4 comments

Snapping Nextcloud: PHP 7

In the previous post of this series, we discussed the process of and lessons learned from building Apache for the Nextcloud snap. Nextcloud is a web application written in PHP, so for this post we'll focus on getting PHP into the snap. . . . (more)
Kyle

No comments

Snapping Nextcloud: The web server

The backbone of any web application is of course the web server, so that's where I started when snapping Nextcloud. I went with Apache as opposed to Nginx for two reasons: 1) Apache is recommended by Nextcloud, and 2) I'm much more familiar with Apache than Nginx. . . . (more)
Kyle

No comments

Installing Nextcloud can be a snap

I've been an ownCloud user for years, and I recently moved to using Nextcloud, which is based upon ownCloud. Both my wife and I use it to sync our calendars and contacts across all our devices, and also use it to sync our documents, music, pictures, and videos. It caters to my paranoid nature-- the idea that all that information is being saved on my own in-house server instead of someone else's greatly pleases me. . . . (more)
Kyle

No comments

Building your snap on-device? There's a better way

I'm currently the maintainer of the ownCloud snap. One of the primary target devices for this snap is a Raspberry Pi 2, which is of course armhf. Snapcraft solves a lot of problems when building snaps, but one issue it doesn't solve is cross-building (i.e. building on one architecture while targeting another). Back in Snappy Ubuntu Core 15.04, every ownCloud release I made for armhf was built on the Raspberry Pi 2. What a painful experience that was-- it needed more RAM than the rpi2 had (so I . . . (more)
Kyle

3 comments

That's one Snappy MOOS

So you're a roboticist, looking at Ubuntu Core and Snappy, trying to decide if they're a good fit for your project. You come across some ROS documentation and realize that the ROS support is first-class, but you're not using ROS. No, you're using the Mission Oriented Operating Suite (MOOS). Why is there no documentation on using MOOS? Because it's too easy to need a document, that's why. . . . (more)
Kyle

No comments

Seccomp filters on the Ubuntu Phone

The officially-supported Ubuntu Phones run pretty old kernels. The Nexus 4 and BQ phones all run v3.4, and the Meizu MX4 runs v3.10. Device kernels typically lag a bit behind since so much effort goes into making them compatible with the hardware, but this posed a bit of a complication since the Click confinement model utilizes features of AppArmor v3, which isn't even released yet. However, we like to push the envelope here at Canonical, so we backported it into our phone kernels anyway. . . . (more)
Kyle

No comments

Prototype: A GUI-friendly Snappy

So this is the week of the Ubuntu Online Summit, and many of the sessions are discussing Snappy. As you may know, Snappy is currently pretty geared toward embedded, headless devices. However, it is the successor to Click, and eventually the phones will be based upon it. To drive that effort forward, a few colleagues and I had a session (you can watch the video) where we discussed the path forward for supporting snaps on other devices, specifically the phone and the desktop. . . . (more)
Kyle

2 comments

V3 Technology Awards: Vote for Canonical!

I'm pleased to announce that Canonical has made the shortlist in several categories for the V3 Technology Awards! Now it's all in your hands: Go and Vote for Canonical! Note that voting closes at 5pm on Friday, October 9th. . . . (more)
Kyle

No comments

Snappy Scope: Progress Update

I've previously written about Snappy and Unity 8's Snappy Scope, back when I was first getting started on it. Since then, both the scope and Ubuntu Core itself have come a long way, so I thought it was time for an update and a quick demo. . . . (more)
Kyle

2 comments

Rails Testing Nirvana: Travis CI and Sauce Labs

I think we can all agree that testing one's Rails project is a good thing. I think we can also agree that those tests should be run on a regular basis (i.e. after every change). I think it's a logical conclusion then that having a continuous integration environment setup for one's project would be considered ideal. This is really pretty easy for open-source projects, since a number of companies provide free support for them. The go-to CI for Rails projects seems to be Travis CI, but it has a . . . (more)
Kyle

No comments

Rails: Writing Engine Tests That Depend on Main Application Models

When developing a new Ruby on Rails project, one doesn't always start from scratch. Often one first searches for an open-source project that will at least get one part of the way there. For example, one might want to do something as simple a create a website with a blog as well as image galleries. The first step in this journey might be to find some open-source blog software for Rails, e.g. Publify (previously called Typo). Great, one has a blog! . . . (more)
Kyle

No comments

Unity 8's Snappy Scope

I recently began a new position at Canonical. I joined this company in particular to give myself more opportunities for growth. Now, when I say that, people tend to assume I'm talking about a managerial track. I'm not sure why they tend to jump there, but it's not what I'm referring to here. I'm talking about technical growth. I feel at the top of my game when I'm learning something brand new, and I needed a company that facilitated that. Canonical has delivered. . . . (more)
Kyle

No comments

VirtualBox: Internet Access With Host-Only Network

I ran into the need to access the internet from a VirtualBox VM via host-only networking. Of course, you're saying "There's a better way to do that!" And of course, I agree: with no other considerations, the best way to do this is to simply add another NIC to the VM configured as NAT instead of host-only. However, I'm trying to test out some new networking ideas for my OpenStack Network node, and it doesn't have a NIC configured with NAT. Since I'm trying to reproduce a production system in . . . (more)
Kyle

1 comment

The Face Detector

Several years ago, I was new to my specific group at work. I was working on a combination of image processing and a GUI for keeping track of specific objects in the camera's view. I started on the GUI first, writing a server that received object locations and handed them off to the GUI which displayed them in a nifty way. I was using Qt and QML, which I have used in numerous personal projects, so I was pretty familiar and confident with what I was doing. In order to test/develop the GUI I threw . . . (more)
Kyle

No comments

GitLab 6.3 with Apache and Passenger. On an ARM

As I've mentioned in previous posts, I run all my websites on a Mirabox-- my nifty, low-power ARM server. As awesome as it is having a low-power server, it does make things more difficult. I'm a Ruby on Rails developer, and I run three websites on this thing, along with a gitolite installation so I can host my own code. However, I recently began a few projects collaborating with other people, and as the projects grow, gitolite is not the collaboration platform of success. I need groups and . . . (more)
Kyle

5 comments

QEMU: MiraBox Emulation

As I mentioned in a previous post, I host various websites (including this one) on a MiraBox sitting behind my tv. In that same post I outlined how Globalscale screwed me by mixing releases in the sources.list. I didn't catch it until I had an unbootable system, and I had to completely rebuild my server which took weeks. I very nearly tossed the whole thing in favor of hosting my websites on a "real computer, made by people who knew what they were doing," but I reminded myself why I settled on . . . (more)
Kyle

No comments

Upgrade Makes Mirabox Unbootable

For some reason (I can't really put a finger on it exactly), I like to keep my servers up-to-date. I know! All those security patches, all those new features-- they're a killer! . . . (more)
Kyle

15 comments

Dell Sputnik Beta Participant Gift

Well, how nice! Look what the UPS man hid behind my garbage can (seriously... the thing was all damp; it must have been sitting out there for two weeks): . . . (more)
Kyle

No comments

TSA: "Red is the Bad Color"

At work, a large part of my focus is stereo vision. Well, a coworker and I needed to attend a three day training seminar, which we expected would be quite boring. So, we grabbed a pair of cameras, secured their baseline by attaching them to a small metal beam, zip tied the beam to a 12V power supply, and shoved the whole thing into a pelican case so we could continue working on interesting things while we were there. . . . (more)
Kyle

2 comments

Dell Sputnik XPS 13 Critiques

As I mentioned in my last post, I recently picked up an XPS 13 at a discount from Dell for the Sputnik beta project. When I say "recently," I actually mean about two months ago, which means this is not a "first look" post. This has been my main computer ever since it arrived, which means I have some thoughts to share. Mostly critiques, at least for this post. . . . (more)
Kyle

No comments

My new laptop: Dell Sputnik XPS 13

My old laptop finally seemed to be on its last legs, so I began shopping. I'm the kind of guy who will do research for a month before spending $100 on a hand-held vacuum cleaner, so you can imagine how I deal with something having three or more zeros in its price tag. . . . (more)
Kyle

No comments