A Month Developing on a Acer C720 Chromebook

I bought an Acer C720 Chromebook (11.6-inch, 4GB) recently. It was refurbished for $200.93. This was a very different purchase than the $1,300 MacBook Pro I bought after working all summer when I was 15. The trusty steed I rode during my first galactic endeavors into the universe of computation. The words do not exist to explain my love for that machine. I guess I don't love the machine, but the memories and knowledge it has provided. 5 years is a long time. I still use it as an alarm clock and to make music. I refuse to let it go.

The Machine

With that over, let's talk about the C720. You can find tons of reviews that can be summarized with: it's pretty good. Chrome OS can be criticized, and the trackpad and display are cheap. It was $200. My old MBP was heavy, big, and the battery only lasted 1-2 hours. The progression of OSX was beginning to constrict my 4GB of ram. The C720 is light, small, and the battery lasts plenty long. It is liberating to not need to think about sitting near a power outlet at school. My criteria were cheap, light, and good battery life. All of these are present in the C720.

The Software

Chrome OS is funky. Chrome itself becomes the interface to virtually all applications. Some applications appear standalone (like a text editor), but I am positive it's all WebKit underneath. The settings are incredibly sparse, essentially Chrome's settings and settings for the desktop.

Printing was delightfully easy, although I have yet to try it at school. However, it was only easy because I was fortunate enough to inherit a new-ish printer with Google Cloud Print capabilities. I don't think there is an option to print without this. It is cool that I can print from anywhere on earth.

Development and crouton

Ignorance disclosure: I don't entirely know how crouton works. "It stands for ChRomium Os Universal chrooT envirONment ...or something like that." You can put your Chromebook in Developer Mode, and quickly have a fully featured Linux environment. From here, everything is just a sudo apt-get install away. It's a little screwy, because your shell lives inside Chrome, and there are sometimes random issues. The only directory available to the native Files app is ~/Downloads. This is odd and I don't like it. My 1.4GHz CPU, 4GB of RAM and 16GB SSD isn't much. However, since most of my development exists in space (school servers, work servers, personal servers), I don't really need a ton of processing power in my pocket. It is good to be lightweight if you spend your life in the cloud.

There is obviously no way to do iOS development. I am keeping my old MBP for this, along with other things. There is no Logic Pro, there is no Photoshop. The web can be restrictive. However, most of my development lately is Java (school), PHP (work), and Python (life). Since I lived in the terminal on my MBP, things haven't really changed since switching over. I usually only use the SSH "webapp" within Chrome, but I could launch an xfce desktop environment if I need to. I could run GIMP here. I don't really ever use this.

Google and God share some letters

To nobody's surprise, Google has taken a lot of control in ChromeOS. Google Drive syncs files in your only visible directory, ~/Downloads, which I have tried to ignore by working inside other directories. The only real option for an office suite is Google's webapps. Google syncs all of your Chrome data, which is almost everything within ChromeOS. The only printing option is Google's Cloud Print. Sure, these things are handy, but Google has a whole lot of data.

I don't even know what else I wanted to say. I really like the little guy.


Finger Tracking

I cut two peices of a red plastic cup to play with a new camera module I got for my raspberry pi. I am now working on using these numbers to control a synth.

One Hand Words

These are some words that can only be typed with the left hand, 'qwertasdfgxzcv' and are longer than 9 letters.

aftercataract aftereffect aftertaste afterwards cataracted exaggerate exaggerated extravagate grasswards gravestead gravewards reaggravate reaggregate reasseverate redecrease redefecate retraverse revegetate stagecraft staggerweed starveacre statecraft stewardess streetward sweetwater tartarated terracette terracewards tessaradecad tesseradecade tesserated tradecraft versecraft waterstead waterwards westerwards

The right hand has 'poiuylkjhmnb', and can make these words. I don't know what any of them mean.

bibliophily bibliopoly hypnophoby hypolimnion hypophyllium hypophyllum miminypiminy ophiophoby phyllophyllin polyphonium polyphylly

Summer 2014

This summer I'll be working on iOS at Wealthfront in Palo Alto. Here is an article that describes the company and recent funding. I don't have much to say about it yet, but I like to post large life events like this here for anyone to read. I'm excited to be doing mobile full time and have a good summer in Palo Alto. Now to find a house...

Special Projects

I was fortunate enough to stumble across a project at school that has intereseted me, and I've began development on some new robotics projects that I'd like to discuss here.

One important portion of botanical research involves surveying and collecting plants from their natural habitat. A herbarium (pl. herbaria), is a collection of plant samples. They usually consist of a bunch of file cabinets containing large peices of cardstock that have a sample pressed to them and relevant information written down. If the plant is in danger, the physical sample can be omitted, and the information about the plant will still be useful. The field botanist will write down as much information as possible, such as surrounding species, physical details of the plant and position (soil composition, grade, sun quality, location, etc.). These physical files are digitized. Because herbaria have existed for over a hundred years, not all digital entries contain a GPS coordinate.

Samples will be dealt with at whatever organazation the collector belongs to (Cal Poly, Yosemite NP Herbarium, UCLA, etc.) and later combined into a huge database at the Consortium of California Herbaria. This is hosted at UC Berkeley. There are a few hoops before getting the entire data set, but you can search it online at ucjeps.berkeley.edu/consortium/.

There are a few issues in the pipeline, and finding solutions to these Special Problems will be a goal of mine next quarter. (I even get a faculty advisor and credit for my work.) Currently, the entire set of Cal Poly's data is in an Excell spreadsheet. Each herbarium has a different data housing style, which was designed to give each institution control and resposibility of their data. When the Consortium recieves a new set of data, they have scripts to convert each institution's data to the Consortium's database system. Then, if other institutions comment on the entry, that info never comes back to Cal Poly. There are entries dating back to 1880, and might be located at "Sierras", not a GPS coordinate.

Lastly, I am hoping to work with people smarter than myself to search through the data and use the massive data set to answer questions such as: are there plants where we didn't expect them to be? How have things changed over time? Where haven't we looked and should be?

That will be a self-guided class for school. The other project I wanted to write about will be worked on in free time, and is some new robotics projects. I recently picked up a Raspberry Pi, and it gives a much more powerful programming environment in a portable, low cost, low energy computing unit. With $30 you can have a Linux box with 1080p HDMI output, with a bit more you can get a keyboard and HDMI dongle and have a full functioning system. The GPU is cheap, but GUI's are always optional.

I am currently collecting parts for a quadcopter, or possibly a hexcopter. Multirotors are increasingly popular due to ease of control and stability. There are relatively cheap flight controllers that use user input as well as gyro/accelerometer data to stabalize the flight. The user can focus on autonomy or interesting flight details rather than low-level rotor control.

The projects I want to investigate include filming (and stability), search/rescue and surveying applications, and speech based expert systems. These are difficult tasks, so progress will be tedious.

Well, I usually loose my drive to write around now, so have a good day.

Telescopes and Programming

"Computer Science is no more about computers than astronomy is about telescopes" - (Disputedly) Dijkstra

A distiction that many choose not to make is that between computer science and programming. This is (as always) my naive opinion. Programming computers is a creative act, in that you are creating something. We happen to live in an era where programs, the things you create while programming, do things that make people money. I bring up this simplicity to contrast it with computer science - the heavily mathematical endeavor of modeling and theorizing computation. Now, they both eternally entwined, as are telescopes and astronomy, but they are distinct pursuits.

My primary frustration, and reason for writing on this topic, is people thinking computer science is just programming. I see it in students and course material both. It stems from the fact that just programming can make you hundreds of thousands of dollars, and make your university famous for supplying great software engineers. But at a personal level, considering computer science just programming disregards a vast and beautiful body of literature that makes you wonder about the nature and extent of these machines.

Pull to Refresh

A few exciting changes have happened over the last couple weeks, and I usually talk about career progressions here. I also want to test out the posting workflow with Pelican.


I quit my job. I was working for an awesome software company here in San Luis Obispo. I wanted more time to work on my own personal projects. I don't need the money for now, and my time is worth more than that money. I liked the people I worked with, and that was most of why I stayed there. The work was enjoyable, but I have a huge list of projects that I've been meaning to work on. Time is scarce, and I needed to reallocate.


This weekend I was lucky enough to hear about the Launch Hackathon and attend. There were 1000-some hackers, 48 hours, and a few winners. We hadn't really expected to win, and we didn't, but we ended up with an awesome seed for a project. Companies could "buy" a presence at the event, which in turn bought me a ton of awesome food. I slept a solid 8 hours between the two days. I got to meet some cool people and write a ton of sloppy code. The event could have been handled better, but I had a great time.

New Things

I didn't leave work to have more free time. I am pursuing a few projects that can potentially make revenue, and pursuing them with equal or greater effort than what I put into work. First I'm going to finish our Hackathon project because we have an awesome design and it deserves to be finished. If it succeeds, we will have an interesting place in the private-social photo sharing arena, and if it fails I have an awesome portfolio item and a heaping tablespoon of experience. After that I have some fun business projects to try out. I am in a safe position to fail financially
so I should take the oppourtunity to do so. There is a long list of ideas, so talk to me if you're curioius.

I am going to launch a company, but illegitimatly so. And not for financial reasons.

When someone asks you if you want to go camping, "I have work in the morning" seems to be a perfectly understandable reason why I don't want to go. But saying "I want to be in my room programming in the morning" (and not camping with you) is nearly offensive. People love to leech your time. It's usually in good faith, camping is fun, but there is often a need for blocking out areas of time to work on projects. Saying "I have work" is universally understood as important. What I'm getting at is this. I'm going to make a company to be able to express my goals and organize my time, even though the actuall business wont be doing anything for some time. I've considered going back to freelancing, and it'd be cool to have a brand to work as.

Also, creating and branding businesses is super fun. I got the domain bigtre.es! There is nothing there right now though.

Aaaaand end ramblings.

Bit Costumes

Considering programming analogous to doing puzzles is a cliché, I know. A simple heuristic for saying "oh, that utilizes this one half of your brain organ or something." Aside from the absurdity of the left and right duality of our noggin, the programming-is-a-puzzle metaphor has provided me some revelations.

When programming, you get these pieces. Usually considered data, or something you want to interact with, and these pieces have plugins of sorts. Proprietary plugins that have a few select other pieces they can plug into. Pretend you have a signup form that needs to check on the database if an email already exits. At a high level you might say "oh we are going to expose that database query as an API on the server, which the client side JavaScript can interact with to alert the user if the email has been used." That doesn't really sound like a puzzle. That sounds like sequential list of verbs. But let's look at the data involved. Human (data in the brain) types in web browser, the field becomes a string, becomes an HTTP request,  goes through an array of routers and DNS lookups, becomes TCP transmission, arrives at Apache (web server), gets sent to PHP, is processed into a SQL statement, is sent to the database, is sent back from the database, is processed by PHP again, then becomes HTTP then TCP then arrives on the client, is processed by JavaScript, and tells the human if the email has been used or not. Whew.

My point is not about the granularity or multitude of the pieces but the nature of the pieces. The data is always being processed, converted, and given little costumes so it can get into all the different parties it needs to get into.* When drawing out programs, I like to think of the data as much as possible, because a close look at data forces you to consider up front the processes that need to happen.

*The costume metaphor was a stretch, but let me explain. An email 'me@gmail.com' has a bit representation on the clients computer, being processed by the client JavaScript. When processed into an AJAX call, it's given a costume of HTML. Another costume might be a SQL costume, containing that same bit representation of 'me@gmail.com' but with other bits around it.

The final note: consider that SQL, HTML, HTTP, TCP, AJAX and XML are some acronyms. Cool. But dig one level and you'll see that every one of them has either 'language' or 'protocol' both of which mimic human behavior.

It's a fun game to play.


The Shoulders of Giants (er, turtles)

I constantly want to point out the reality that we all stand on the shoulders of giants. Despite the oddity and humor, this photo by @substack accurately describes how the internet, and other facets of modern technology are built. The progression of technology is much like the progression of government (although quicker), in that new rules and facts are heavily based on previous rules and facts.

When a person builds some software, we think of it as similar to building a house. Let's say it's some very impressive software, it may be thought of as similar to building an impressive skyscraper. On the contrary, I like to consider building software like building a mathematical proof. An impressive proof contains references to past work, and the proof would not exist without them.

This removes the emphasis from the individual software developer, but isn't meant to belittle them. It helps me realize the importance of cooperation. It's a nice thought really, to know that we need to work together to progress. Noticing the shudders we stand on gives a humanistic perspective to the work we do, and that's nice.


Here's to Technology

I've had this setting for a book in my head for like 7 years, but the implications never really hit me. The premise was that much of our "technology" was no longer functional; computers, cars, even guns were out of the picture. I thought it would be an interesting thing to observe, whether war broke out, civilizations shifted, or we all died because we are grossly incapable of life without engines.

I was thinking about this the other day when I realized: I would have literally no applicable skills.

I frantically tried to inventory my abilities to find something I could do in this situation. Most of my focused skills are directly related to pressing buttons on computers trying to create value, whether it's writing, programming or music. Ultimate frisbee isn't very useful for feeding myself in apocalyptia, nor is juggling, and that pretty much exhausts my collection of skills.

The other day when I was waiting for class I picked a weed out of the ground and harvested the fibers that were in the stem. They were just tiny little strings, but pretty strong so I braided them together. I guess I could make rope from weeds, but it took me 15 minutes to make three inches, and then it fell apart when I tried to make it into a bracelet.

Here's to technology lasting for a few more decades.


Subscribe to Clay Jones RSS