Cassidy James

Personal blog/musings of Cassidy James Blaede.

Jun 2, 2015

Shortlist (June 2015)

A year ago I explained what my personal shortlist is. It's time to update it!

To quote myself, a shortlist is:

...a list of a few things I really want. Not just, "Oh this looks nice, add it to the list." But like, the things I'd like to get for myself if/when I can afford it. If someone really wants to get an awesome gift from my shortlist, I will absolutely love it. Otherwise, they can use that list as inspiration for other things I'd like. Or they can give me something more personal/handmade, and that's cool.

Current Shortlist

  1. A dog!
  2. System76 Meerkat
  3. Philips Hue A-19 Starter Pack

...and that's it! Last July, my list included a Nest, Lockitron, Destiny, and a Moto 360. Luckily Katie and I were able to purchase a Nest from our Airbnb funds and have been saving a ton of energy. After revisiting smart locks, we decided the Lockitron wasn't actually all it was hyped up to be so we passed on it. I did get myself Destiny and a Moto 360 and have used both a ton in the time since. :)

This time around I'm not really wanting much. I love my phone (Moto X 2013), my watch, my PS4 and current games, and most stuff in my life.

1. A dog! $1600 (initial fees + 1st month)

Katie and I have started saving up to rescue a dog from a local shelter. While a golden retriever is probably our top pick, we're staying open to whatever dog we fall in love with. :)

2. System76 Meerkat $700 (i5, 8 GB RAM, 128 GB SSD)

The Meerkat is tied with the Galago for my favorite product we make at System76. It's a tiny full-powered desktop computer! Katie and I have a small computer desk with a nice display, but constantly hooking and unhooking our laptops (and finding power cords!) is a pain. It'd be a lot more convenient for us and our Airbnb guests to have a permanent desktop computer tucked away and always ready to go.

3. Philips Hue A-19 Starter Pack $190

Katie and I have replaced many of our lights with lower-power and cooler LED bulbs (thanks, random Woot! deal!), but we haven't branched into the smart bulb territory. Philips Hue seems like the way to go, and the starter pack makes it easy to get all set up at once.

Apr 29, 2015

My elementary Wishlist x2

About a year ago I posted a list of four random apps or utilities that I'd love to be able to use on elementary OS. While one of those apps was started (Taxi, the FTP client), I've thought up a few more.

As last time, I'm imagining each solution as a beautiful, elementary-native, GTK3 utility; so good it feels like it's a first-party elementary tool.

Icon Inspiration

Oftentimes while designing something, I get stuck on an icon or symbol metaphor. Whether it's an app icon or an action in a toolbar, sometimes designers need some inspiration. Aside from Google searching or using some website, it's difficult to get a comprehensive list of icon metaphors based on key terms. And even when you do go Googling, the results are pretty poor. realized this and created a whole service around the idea. The problem there? I don't always want to launch my web browser, plus using the site can be slow.

Rough sketch of an Icon Finder app

My solution? A native Icon Inspiration app. Iconfinder has an API, so it should be possible to piggyback on their awesome work. I envision it as a very visual app with some pre-defined categories or terms, but the major interaction would be with via search. Searching terms would return icons that match, appropriately caching them to cut down on load times in the future. A "favorites" mechanism could be especially handy if someone is searching several different terms and wants to come back to the ones that worked best.

Photo Filters

This one may not seem original, but it's something that's lacking on the general Linux desktop, let alone elementary OS. :)

Sometimes I have a photo and just want to give it some sort of look before sending it off elsewhere. On my phone I'd use something like Instagram, VSCO Cam, Aviary, or Snapseed. But there's nothing that simple for elementary.

I picture a very minimal UI: give me the photo big, front, and center and have a nice dark overlaid UI (similar to Audience/Videos in elementary OS). At the bottom could be a handful of carefully-tuned "looks" from which to choose, and the headerbar at the top could have undo/redo and share (powered by Contractor). That's it.

Rough sketch of a Photo Filters app

It's deceptively simple. The real work comes in the algorithms/presets. While there are many image manipulation libraries and complex tools like GIMP available for elementary OS, the key is finding and tuning the preset algorithms to work well on a variety of photos and just look good.

That'd be a minumum viable product. Additional features once the basics are nailed could include slight tweaking of the effect (strength, blur, etc.). But again, it's more about choosing smart defaults than letting the user make their photos look bad.


I have a Nest thermostat. It'd be rad if I could control it from my computer. That's all. :) They also have an API.


In addition to apps this time, I've thought up a few useful libraries that would make developing all sorts of apps easier.

Dropbox Wrapper

Wrapping the Dropbox API up into something any elementary app developer could plug into would be awesome; while there are a number of API wrappers out there, none are simple to get started with on nor targeted toward elementary OS.

A LibDropbox (if you will) would let a developer drop in their app name and API key and have an easy way to sync data with Dropbox as a backend. This could then potentially be used for a full-featured plugin to the Files app, for syncing in the Photos app, etc.

Chromecast Wrapper

Similar to the above, but for Chromecast! I know there's been some work to be able to control Chromecast from the command line, but a full-on library for elementary OS could allow other developers to put a cast icon right in their apps and send video or audio to it. It could even be added as a sound or video output device in System Settings. It could also be made into a contract for Contractor so developers don't even have to code specifically for Chromecast; any audio, video, or photo app could get Chromecast support for free.

Smarter Email

This one's kinda complex, so stick with me.

One reason I use Google services is because with all that data, I get some useful utility. For example, if an airline emails me info about a flight, my flight info shows up on my phone homescreen (via Google Now) when I'm getting close to that date/time. If I'm in Inbox and there's an email about a package, it shows me a picture and its status without even requiring me to drop into the email itself. If I get invited to an event, Inbox gives me an actionable summary with details pulled from the email.

In each of these instances, information was pulled from my email and presented to me in a nicer way. It's data I already had access to. There's no new information being given. But it still makes using Gmail worth it to me. But not everyone is happy with the automated data collection going on behind the scenes. I'm not toting a tinfoil hat, but I'm not sure I'm thrilled with it, either.

So let's make a library that does the same sort of thing, but that is open, works offline, and is native to elementary OS. We could pull data from certain types of emails like flight info, hotel reservations, shipping info, calendar events, and even important reminders/to-dos. We'd need to seed it with some anonymized emails, which could be provided by the developers or by users on an opt-in basis.

If this LibSmarterMail (as I've named it in my head) was created, it would enable developers of apps like Geary to expose more relevant information and actions than just email subjects. It would enable Google-Now-like predictive computing without the downsides of a central company aggregating all of your data. And it'd make it easier to ween myself off of Google products. ;)

List from last time

Here's a link to the previous wishlist in case you missed it last time:

I'm sure I've thought of or will think of more ideas like these. I'll follow up this post with more once they're fleshed out a bit!

If you have any questions for me or want to start work on one of these ideas, feel free to contact me at +Cassidy James.

Jul 23, 2014

Misuse of Terms in UIs

Throughout the years, I've noticed several recurring misuses of terms in user interfaces. Designers or developers often don't know when to use one term over another, or what the difference between two similar terms is. These really are grammar rules, but they specifically apply to user interfaces.

As a general rule, if there is a term with two words and another term with those two words written as one word, the former is considered a verb and the latter is considered a noun.

Log In vs. Login

Log In: (verb) To authenticate or provide an identity to a website, app, or service.

Katie logged in to Facebook.

Login: (noun) 1. One's credentials or identity for a website, app, or service. 2. The specific page, section, or feature that provides functionality for logging in.

  1. Katie provided her login to Facebook.
  2. Katie visited the login page.
  1. It's best to avoid using login for credentials as it can be confusing to users. Instead, specifying "username and password" or similar required credentials is more explicit.
  2. Login can be useful when referring to pages internally, but should be avoided in user-facing text in favor of the action verb log in.

...and Log On

Log On: (verb) 1. Usually synonymous with log in. 2. Informal: to visit a website.

  1. Log on to the computer.
  2. Log on to to see our latest posts.
  1. It's best to avoid this one as well since log in is more common.
  2. A better term would be "visit."

Sign In

Sign In: (verb) Synonymous with log in.

Katie signed in to Facebook.

Using sign in versus log in is a preference. However, be sure to use only one of the terms, and use it consistently.

Log Out and Sign Out

Log Out: (verb) 1. The opposite of log in. To deauthenticate from a website, app, or service. 2. Informal: to leave or close a website, app, or service.

  1. Katie logged out of Facebook so her sister could log in.
  2. Katie logged out of the website by closing the window.
  1. Logging out should be an explicit action.
  2. Although log out is commonly used this way informally (especially by those who are less computer literate), it's best to avoid it.

Sign Out: (verb) Synonymous with log out.

Always use the parallel verb for your log in or sign in.

Set Up vs. Setup

Set Up: (verb) To prepare or initiate.

Katie set up the computer for her sister.

Setup: (noun) The process that involves preparing or initiating.

Katie performed the setup of the computer.

Less vs. Fewer

Less: a smaller amount when the item is not countable.

Katie has less hair than her sister.

Fewer: a smaller amount when the item is countable.

Katie has fewer hairbrushes than her sister.

If the subject you're comparing is not commonly referred to as a countable quantity of individual items, i.e. lots of sand, use less.

If it is commonly referred to as a countable quantity of individual items, i.e. three grains of sand, use fewer.

If you're unsure, ask yourself, "Is it how much or how many?" Much = less, many = fewer.

Are there other terms you've seen misused in user interfaces? Let me know in the comments.

Jul 7, 2014

Shortlist: July 2014

I hate wishlists. Making a big long list of all the things you want just seems both tedious and selfish for some reason. I get that some people might want to get you gifts for your birthday or Christmas or some random occasion. But by making a wishlist, I feel like I'm saying, "Get me anything as long as it's on this big long list."

Instead, I've come up with the idea of keeping a personal shortlist. What's the difference? It's a list of a few things (I still haven't decided on a cap, but definitely ten or fewer) I really want. Not just, "Oh this looks nice, add it to the list." But like, the things I'd like to get for myself if/when I can afford it. If someone really wants to get an awesome gift from my shortlist, I will absolutely love it. Otherwise, they can use that list as inspiration for other things I'd like. Or they can give me something more personal/handmade, and that's cool.

Current Shortlist

  1. Nest thermostat
  2. Lockitron
  3. Destiny for PS4
  4. Moto 360

Right now, it's at four items. It could grow to five or six, but these are the top things I'm currently in love with but don't own. :)

You may notice the top two items are decidedly grown-up; Katie and I are now married and living in our own apartment, so I have an excuse to use these smart home gadgets. :D

Apr 24, 2014

Life Changes

There comes a time when you want a change in your life. After dating my girlfriend Katie for nearly six years, I asked her to marry me. But that's old news (and the wedding is fast approaching).

Apparently I didn't think that was enough of a change in my life, so I went and accepted a position at System76 in Denver, Colorado. Katie and I will be moving out there this summer after our wedding.

It's quite the move from Iowa and we'll greatly miss our Iowa friends and family, but it's also an incredible opportunity for us to start our own family together.

I'll be hopping on board as a front-end web developer, making the System76 site (and other projects they work on) rock. I'm excited to meet the team in person and work with the people who make my favorite computer.

If anyone is around the Denver area and has tips for moving/getting settled there, let us know.

Apr 20, 2014

My elementary Wishlist

Occasionally I think of random apps or utilities that I'd love to be able to use on elementary OS. I jot them down and keep doing what I was doing, but today I decided to share in the hopes of inspiring someone out there to design and develop some cool things. :)

In each case I'm imagining the solution as a sexy, elementary-native, GTK3 utility. Something that would feel like it's a first-party elementary tool.

Synced Clipboard

Though not everyone has multiple elementary devices, there are some times when I copy something on one computer and want to access it from another computer. Right now, I pop open Geary and shoot myself an email as it's the quickest way to get that text onto another machine. Instead, it'd be interesting if my clipboard was just synchronized across my elementary devices—and possibly even my mobile devices.

To implement this, I'd imagine someone would have to tap into an existing cloud syncing backend. I can't share extensive details, but elementary is working on some pretty cool cloud backend magic. Collaborating there would be awesome.

Stupid Simple Remote Desktop

This is something I've brought up before, and I still don't think anyone has nailed it. Google has their Chrome Remote Desktop which is pretty easy, but it depends on the entire Google Chrome app being installed and running in the background at all times. VNC and Microsoft's remote desktop both work if configured properly, but every experience I've had there has been confusing or impossible due to firewalls.

What I imagine is a simple native app that each person installs. It has something like three options:

  1. Get Help (invite someone to control your computer),
  2. Give Help (control a friend's computer after being invited), and
  3. Access Your Devices (remote control your existing remote computers).

From a technical perspective, I'd expect it to use some sort of SSH tunneling to be secure, maybe using VNC through that. I'm not the most knowledgeable about remote desktop protocols or tools, but I feel like it should just work over the web with tunneling. Without me having to know what VNC, SSH, or tunneling are.

Simple & Smart FTP Client

Yes, I know Filezilla works (most of the time). But it's ugly, overly complicated, and excessive for most of what I do with an FTP client. What I'd much rather see is a beautiful GTK3 FTP client that lets me set up my projects and connect to them easily. I imagine it having a sidebar (SourceList in Granite lingo) with these projects, and two synchronized panes, the left for the local project files and the right for remote. It'd use the system's default filetype associations, could smartly auto-sync my changes, and would possibly even keep track of the changes with a sort of version control.

This is one that I haven't thought all the way through, but mostly comes from being extremely dissatisfied with the current landscape of FTP clients for elementary OS.

Launchpad for Desktop

As you may know, elementary makes heavy use of Canonical's Launchpad service for bug reporting, code repositories, blueprint tracking, etc. It's an extremely versatile and powerful service. But using it on the web feels excessively complicated.

I imagine a native desktop app for Launchpad. It'd remember my login and auto set up my public/private keys for authentication. It'd also give me access to projects to which I have contributed or can contribute. I could view the recent activity of the project, report and triage bugs, branch it to solve a bug, and submit merge requests. Essentially every time I'd typically go to the Launchpad website, I'd instead be able to complete the task in this beautiful native app.

Where this overlaps with a full IDE, I'm not sure. However, I see value here not only for elementary, but for anyone who develops for Ubuntu or its derivatives.

I'm sure I've thought of or will think of more ideas like these. I'll follow up this post with more once they're fleshed out a bit!

If you have any questions for me or want to start work on one of these ideas, feel free to contact me at +Cassidy James.

Apr 7, 2014

Why a music app shouldn't be a podcast app

Many popular music apps handle not only music, but podcasts. The thinking goes that since both are comprised of MP3s (or other audio files), that they should be handled in the same app.


The mental models between a music app and a podcast app are vastly different, though. I don't go, “Hmm, I want to listen to one or more MP3s. Do I want that to be a series of songs, or a podcast?”

I go, “Hmm, I want to listen to some music,” or, “I want to listen to a podcast.”

Just because one underlying piece of technology is the same doesn't mean it needs to be the same app. Especially when you start to consider the unique aspects of podcasts like subscribing, downloading, streaming, video, etc. It's just a whole different monster.


This is why I'm excited to see the third-party app Vocal being developed. It's a podcast app through and through. The elementary Music app can stay dedicated to organizing and playing music, while Vocal can take all of those podcast duties and rock at them.

Cross-posted to the elementary Journal.

Mar 31, 2014

5 Myths About elementary

Whether I'm browsing Google+, responding to tweets from @elementary, or telling friends about elementary in the flesh, I'm bound to hear some random myth about elementary that is just plain false. I've noticed a few (five, to be exact) that seem to keep cropping up. Rather than copy-pasta my response to each and every comment out there, I decided it'd be more worth my time to lay them out and tackle them one-by-one here.

elementary is just a theme on top of Ubuntu

Most people have seen what elementary is now, but some are stuck in 2010 and think it's all about the icon and GTK themes. While these are distinct and important aspects of elementary as a whole, we've grown far beyond just themes. elementary includes an entire operating system (elementary OS) built from an Ubuntu core, a desktop environment (Pantheon) and all of its components, several apps (Files, Noise, Audience, Maya, Terminal, Scratch, Snap, and Switchboard to name a few), a developer toolkit (Granite), a design style, and a set of Human Interface Guidelines. There's so much more to it than "just" a theme.

elementary OS uses GNOME Shell

GNOME Shell Screenshot

The first ever release of elementary OS in 2011, Jupiter, was built from Ubuntu 10.10 and subsequently included the core GNOME 2 stack. This included the GNOME session itself along with some of the GNOME apps. After Jupiter, we realized we could only improve the user experience so much by building from an existing desktop environment, and we started work on Pantheon, a modern DE. We stripped back the GNOME components that we didn't want or need, built replacements where appropriate, and started to nail the UX between WingPanel, Plank, Slingshot, and the other components. Around the same time, GNOME was hard at work with GNOME Shell, another modern DE.

elementary has never used GNOME Shell, and the user experience between the two is quite different. Because work on Pantheon was happening around the same time that GNOME was developing GNOME Shell, many people seem to think that Pantheon is actually a fork of or built from GNOME Shell.

Also, the panels are the same color (black), at least in Luna.

elementary Forked GNOME Shell or Mutter

Related to the previous misconception, many people seem to think that we've forked GNOME Shell and/or Mutter for our DE Pantheon or window manager Gala. Neither is true, but something more exciting is true.

Gala, a core component of our Pantheon desktop environment is built using LibMutter, the same core that GNOME Shell is built on for its window management. This means we can completely control our user experience while also benefitting from improvements and new developer-facing features under the hood.

Installing Pantheon on ____ is the same as using elementary OS

elementary develops Pantheon, our desktop environment, for elementary OS. Conveniently for many users out there, elementary OS itself is built from the same core as Ubuntu LTS versions. This means Pantheon tends to work on these versions of Ubuntu. However, Pantheon isn't all there is to elementary OS; we also have several changes under the hood that make the OS run better, and in some instances (like with the upcoming Isis release) we include newer libraries than Ubuntu, making it more difficult to use Pantheon on Ubuntu. In addition, we develop and test on elementary OS itself, and we can't always predict the conflicts users will run into when using Pantheon on other platforms.

We don't discourage users from installing Pantheon on their favorite compatible OS, we just don't officially support it and won't be surprised if they run into issues.

Luna is outdated

Ancient photo of Luna

Here's one I hear mostly on Google+: "Luna is so old and outdated, why don't you guys release a new version already?" This is crazy and probably attributable to the relatively fast pace of other open source releases. But look out into the greater pool of operating systems. Is an operating system considered ancient after a short six months? Especially if that operating system has received constant minor updates during that time frame with new versions of apps, fixes, and tweaks? Of course not; our current OS version is Luna and we're pushing out improvements to it all the time.

Further, thanks to the folks over at Canonical, we even have a new hardware enablement stack available to users that includes new drivers and a new kernel for hardware that came out after Luna was released. This is installable in Luna already, but we're also working on a new download image that has it (along with all updates to Luna) included, making installs on new hardware even easier.

Mar 25, 2014

Random Music: Mystery Love

Daniel Foré shared this song with me and I thought it was pretty groovy/funky. It's by +Hugo Millwood's band Galaxy Cat over on Bandcamp. Check it out!

Also, Hugo has given elementary permission to use his music in promos and whatnot, so don't be surprised to see that featured somewhere. ;)

Mar 25, 2014

New New Blog

That was short-lived.

If you follow me on social media (or just randomly visit my website), you may have noticed I said I was switching to Blogger.

As I am sucked more and more into Google's ecosystem (I use Android, Gmail, Drive, Google+, and more on a daily basis), it makes more sense to use Google's platform for writing.

Ha. Except Blogger, well, kind of blows. The only thing it's got going for it at this point is its Google+ integration, and that's something I can cook up myself later or just ignore for now.

So what am I using this time around?, a service/platform that basically runs on top of Dropbox and Markdown. It works for now and I'll be sticking with it so long as it stays operational and simple. I really enjoy the fact that I can write up posts wherever in Markdown then throw them into a folder and they get published. It's pretty cool and insanely easy.

Maybe I'll write more. We shall see.