zk/tech/misc/canonical-interview.md

16 KiB

Canonical written interview

Education

At high school, how did you fare in mathematics and physical sciences? Which were your strongest subjects in the hard sciences, and how did you rank in your class?
I did quite well at math and science in high school. In terms of harder sciences, though, I excelled primarily at biology. Having vastly enjoyed my initial biology class at the high school level. I quickly made my way up to the AP/IB level biology where I was keenly interested in biochemistry.

Beyond that, however, I also excelled computer science, having performed at the top of my class in Pascal (oh, my aching bones), C++, and the HTML/JavaScript class thta was offered there.

What sort of high school student were you? Outside of required work, what were your interests and hobbies?
I was very much a nerd. I dug quickly into computers and choir as my primary interests. For computers, I quickly wound up joining the web team, which helped maintain the school's webpage, and server admin for the two Linux (Debian, if I remember correctly) servers that served to manage personal sites for the web team and the members of the HTML/JavaScript class. I also enjoyed Latin enough to make my own imperial toga so that I could recite my Cicero in style.
At high school, what leadership roles did you take on?
As mentioned, I was a member of the web team, a group of students supervised by the physic teacher who maintained both internal and external aspects of the school's site. The site itself was built up from a combination of Perl and Server-Side Includes.

Beyond that, I was also section leader for one of my choirs, a director for the men's choir, and lead sound engineer for many of the concerts and presentations in the auditorium.

At high school and university, describe your achievements that were considered exceptional by colleagues and staff.
In high school, I achieved an award in Roman history for writing an essay and submitting a cleaned silver denarius to the National Junior Classics League, for which I was recognized at a small assembly. I also helped begin the process of cataloguing the choir music library.

In university, after helping to form the New Music Forum, I helped jump-start the music composition department, sitting in on the committee to assess and hire the new chair. Meanwhile, I also began tutoring students in entry-level Java, C, and discrete mathematics. I also helped revamp the campus library's public computer management for energy savings, created and maintained the reading list for the Atmospheric Sciences Reading Room, and kickstarted a proposal to provide mapping and wayfinding software for both withing the library and around the campus

In languages and the arts, what were your strongest subjects at high school and how did you rank among your peers?
As mentioned, I performed at the highest level in choir, but I also was recognized for writing, with my language arts teacher featuring my short story "All of Time at Once" in the English department newsletter. I was also quite interested in writing for my history and Latin classes. Essays were my favorite.
Which degree and university did you choose, and why?
I achieved a bachelor's degree in music with a concentration on music composition from Colorado State University. Throughout my time in high school and early on at university, I found that it was incredibly easy for me to pick up on topics related to computers and software development on my own, so for my formal education, I chose music composition because I felt that it would help me learn to channel creativity in a constructive fashion, not just in music composition, but in all aspects of my life, for I found the same true in software as I did in the arts.
How did you rank competitively in university? Which were your strongest courses, and which did you enjoy the most?
As with high school, I strove to the highest level of choral performing available, winding up in the CSU Chamber Singers, a group that was invited to tour South Korea for music festivals twice well there, as well perform at the inaugural National Collegiate Choral Organization's conference.

One of the courses I found myself fascinated by and thus performed strongly in was The Psychophysiology of Music where we learned not only about why music works to us, but how it is that our bodies actually take music in, process it, and come up with a powerful response. It offered a lot of insight into why music therapy is a growing field.

Outside of degree requirements, what were your interests and where did you spend most of your time? What did you enjoy most about your time at university?
In university, my interests lay primarily in computers. I explored web development at length, teaching myself Python and Django in one heady week in order to redesign my personal website, spin up a CMS for a music publishing business, and social media badging site that never really took off beyond my small group of friends.

I also spent a good amount of time writing --- primarily nonfiction, though several stories as well --- and mastering LaTeX. This is a skill that I've maintained through the years, and I still use it to typeset books of all kinds, both for my own publications and on contract to small publishers. This response is written in such and compiled with XeLaTeX, naturally.

The best part of university, at least in retrospect, was finding out just how little I knew. It was fascinating to me, finding a new and interesting topic and then not just having permission but encouragement to invest time in it to learn all that I could.

How did you rank competitively in university? Which were your strongest courses, and which did you enjoy the most?
While I believe this is a repeat of two questions ago, I will note that I enjoyed all of my music and computer science courses, but aside from those, my favorite course was The History of Islam to the 1500s, notably because the professor gave us the single question for the final exam on the first day of class and then explained how we would get to that point.

Career development

How would you describe your level of experience as a professional software engineer?
My last three positions have been that of senior software engineer, and I feel as though this fits my level of experience well. Throughout my time in my jobs, I have moved beyond implementing small features to creating, developing, organizing, and managing large projects from start to stable.
What kinds of software projects have you worked on or with before?
Starting in my position at United Health Group, I built an insurance quoting system using Grails and a visual business logic engine developed in-house.

At Canonical, I was one of the early hires to work on the Juju GUI, where I was brought in as a D3 developer focusing on data visualization, which was --- and remains --- an interest of mine.

At Internet Archive, I worked to transition the ArchiveIt's version of the Wayback Machine from the older Java software to the newer asyncio Python version, including introducing a new capture index storage method built atop RocksDB.

At New Vector, I worked to containerize the hosted Matrix chat server offering, Modular.im.

At NVIDIA, I helped build up the GeForce NOW gameplay metrics, hardware profiles, and telemetry dashboard to provide game publishers and DevRel insight into the performance applications on the system.

Describe your level of skill with your best programming language and how you've achieved that.
My two best programming languages are Python and Go, though I'm also proficient at JavaScript. In all three, I am comfortable building and structuring projects, releasing modules and libraries, and testing software from start to finish, and in all three cases, I learned the languages quickly from the ground up, first at school with Python, then at Canonical with the Juju GUI in JavaScript and Juju itself with Go. I love all three of them in their own ways, idiosyncrasies included.
What are your strengths as a software engineer?
My strengths are, in particular, providing strong test coverage for the applications I work on, as well as ensuring that they are performant and easy to understand for new developers. I am also keen on providing the best documentation that I can for both developers and users.

Experience

Describe the skills and strength you will bring to a distributed team - how do you organise yourself, what structure do you like to create around your work?
I have been working remotely with a distributed team full-time for nearly a decade at this point. I have long since set up my life to engage with this in terms of productivity. I have a separate workspace set up for work aside from my personal workspace, I have a flexible schedule to work with teams in different time zones, and I've grown comfortable with paired programming over a distance through various tools.
What experience do you have with community management/developer advocacy?
I have been in community leadership roles in several organizations in the past. I have been programming track lead in several different areas at a convention in San Jose, CA (including writing track lead for the upcoming convention in January, 2022). I helped manage an online magazine and the resulting community around it on Slack and forums. I was president of and am currently the awards chair for the Furry Writers' Guild, helping to organize guild initiatives and the Cóyotl Awards via Telegram, Discord, and forums.

As a developer advocate, I have worked to help small and indie publishers learn and work with LaTeX for publishing, and while at New Vector, I helped with the evangelization of the Matrix secure and federated chat platform. At Internet Archive, I worked closely with the contract managers for the ArchiveIt platform, allowing private web archiving for end users.

What experience do you have with Linux-based software development?
I began using Linux in 2001, and it has been my primary operating system for more than a decade (Ubuntu, naturally). I have been developing software on and for it for about as long. I have experience building and releasing charms, snaps, and debs with PPAs, and live my life in the command line (fish, currently,but I'm plenty comfortable in bash as well). I have developed using Netbeans, PyCharm, SublimeText, and Atom, but my first and forever love is Vim/Neovim.
Please describe your operations or administrative experience.
My last three positions have centered around DevOps, though some of that entered into the tail end of my time at Canonical working with the Extended Service Mechanism for supporting, at the time, Precise for corporate users on UA.

Currently, I work in a serverless environment with AWS Lambda functions running Flask apps, which we auto-deploy using Zappa. As with the whole team, we constantly work in an ops capacity, from on-call rotations to performance tracking with Datadog and Sentry.

Please describe your experience managing events and social media.
Aside from helping to manage Further Confusion in San Jose as programming track leads, I help manage hybrid meetings for the University Friends Meeting by acting as Zoom coordinator. In the process of contracting with small publishers and running my own house, I have managed the temporary communities that spring up around writing anthologies.

In terms of social media, I have managed the social media presence for the previously mentioned web magazine, [adjective][species], the social media presence around my old publishing house, Hybrid Ink, as well as the Furry Writers' Guild via the Cóyotl Awards

Please describe your experience writing blog posts or articles.
While working with [adjective][species] as contributor and editor-in-chief, I contributed articles on a regular basis (approx. 2000 words every Wednesday, as well as managing submissions from other regular and ad hoc contributors).

During my time as president of the Furry Writers' Guild, I worked to write and promote blog posts and internal articles for the Guild itself.

Please describe your experience using or contributing to open source.
I have been using and contributing to open source since my time in university. All of my personal software projects are open source, and in the workplace, I gained a new respect for it beginning all the way back with the Juju GUI in 2012, contributing to OutbackCDX at Internet Archive, working with Matrix and an integrations manager at New Vector, and now working to track issues on external projects at NVIDIA (I am keeping an eye on an open one on flask-restx and one on Zappa).

Context

What do you think are the key ingredients of a successful open source project?
The key ingredients of a successful FOSS project are speed, transparency, and responsiveness.

Speed provides the end users of the product or library the confidence that new features and bug fixes will be delivered (or at least addressed) quickly and clearly.

Transparency provides the end users the assurance that the maintainer or team has a goal to work towards and a path to get there. When things go wrong, transparency helps show that the team understands why and also what to do to prevent both that and similar problems in the future.

Finally, responsiveness means responding to questions and concerns quickly, in a friendly manner, and with all the clarity that is required for the situation. This ensures that the end users know they're being taken care of.

Why do you most want to work for Canonical?
Ever since leaving Canonical in 2018 for what I believed was an excellent opportunity at Internet Archive, I've been missing the company. It is filled with brilliant people, its morals are on track, and its culture is a good fit for me. I truly believe that it is offering a suite of amazing products, doing so in an accessible way, and providing the knowledge to back it up.
Which other companies are building the sort of products you would like to work on?
I enjoy the things that Digital Ocean is doing with their community, knowledge base, and tutorials section for much the same reasons I mentioned above. I also really enjoy a lot of the work being done on Ansible, Firefox, and Nginx.
What do you think Canonical needs to improve in its engineering and products?
I think that visibility to small and medium organizations would help improve its flow toward larger companies and help its adoption by startups. (Is Mark still using the ice-water-vapor metaphor? I really enjoyed that one.)

Additionally, one of the complaints I've heard levied specifically against Ubuntu is the relative paucity of community input and communication for smaller users. Many felt left behind on the switch to GNOME, the work around Mir and Wayland, and some of the issues around snaps (in particular, the Chromium deb in universe simply installed the snap, which led to auto-updates, as snaps do, which led to some security and privacy concerns). I think I started hearing about this around the time of the last classical UDSes.

What do you think is the biggest opportunity for Canonical in this arena?
While I understand that the goals may differ, I think there is much for Canonical to learn from a few companies who are offering increased clarity for their end users. As mentioned above, Digital Ocean's knowledge and tutorial repository is a very helpful resource. Fly.io has an approach to blogging that I find really attractive. StackOverflow is good at what it does, but I think that some of their moderation and advocacy policies are worth emulating.

I know that this isn't strictly part of the answer, but I will say that one thing that Canonical has going for it that I wish more companies did is Ubuntu OnAir. I may be biased, since I worked so much with Rick Harding at the time, though.

Who do you think are key competitors to Canonical? How do you think Canonical should plan to win that race?
While it's certainly important to mention that RHEL is a large competitor for Ubuntu, I think that it is important that RedHat and Canonical are approaching their offerings quite differently. Things such as Livepatch can really help bolster Ubuntu, and things such as LXC can work well against Docker with Ansible.

In the cloud deployment arena, the increasing reliance on microservices and FaaS through companies such as Fly.io and the orchestration provided by Ansible/Tower can occasionally overwhelm Juju.

In both cases, ensuring that interacting with startups as well as telcos and the like might help out. This would increase visibility, especially among companies that are growing rapidly.