I started my coding career early, working on the Debian project when I turned 15. Today, I'm the CTO and co-founder of Nylas, a communications API ...
For further actions, you may consider blocking this person and/or reporting abuse
I love the fact that you're careful to build a company that's transparent about your culture. How have you done that over the years and what measures have you taken to make sure it stays true to what the company and the employees need?
Linux development land can be welcoming or elitist-shaming, depending on if you're contributing to the kernel, package manager, or other parts of the stack. What lessons did you take away from such a mixed community? What was your personal experience? How do you think the lower-levels of the stack dev communities can be more open, inclusive, and welcoming, especially to traditionally marginalized groups?
Since I got involved in Debian Linux through a diversity outreach group, it was pretty obvious to me from the get go that these sorts of groups and programs are important—and that's influenced my commitment to diversity and inclusion to this day. I wouldn't have gone to MIT without Debian Women and that's had a huge impact on my career trajectory.
I was also lucky that because I got involved through Debian Women, the first people I interacted with were self-aware and extremely welcoming and supportive. Mentorship was provided and valued. That gave me a base of security that kept me in the community even when I heard about toxic behaviour elsewhere (or even in other parts of Debian).
Today I want to pay it forward and provide opportunities and support to other underrepresented minorities in tech. I think the exposure to the toxic parts of the open source community also opened my eyes—mostly hearing about it, and also reading terrible things that e.g. Linus would post on the Linux mailing lists. I didn't have much in the way of bad experiences other than a few minor IRC/email creepers. Honestly for the Linux kernel, inclusivity starts from the top and one reason I've never spent much time trying to contribute to upstream Linux is that I don't want to spend my life trying to build relationships with people who aren't worth being friends with.
I've seen great successes in increasing diversity, and they all came from focused hard work and buy-in to the goal. One example is PyCon's efforts to increase speaker diversity, spearheaded by Jessica McKellar. (I can't find the numbers from the past few years, but from what I recall it went from totally dismal to 30-40% or so female speakers, which is an awesome result.)
First you have to buy into the concept as a group, then you have to examine your own biases and implement solutions that address them. It's hard work.
Thank you for such a thoughtful and authentic response!!
Yes, great answer!
Hi Christine! That's an amazing stat (100terabytes of data from 15 billion emails) - how do you think about growing Nylas' API? There's so many older API methodologies and I'd imagine its hard to extract that data from old emails.
Horizontal scaling, basically. :) Our biggest scaling bottleneck is our data storage. We've scaled that out by using "email account" as our sharding key and each email account lives on a specific database cluster. Then services talking to the database clusters multiplex connections using a MySQL proxy service called ProxySQL: proxysql.com/
It's not rocket science, but there's plenty of fun stuff to figure out when you're dealing with so much data and request volume!
Another fun fact, we don't actually use microservices at all; our application architecture is still fairly monolithic. We have different services which each have their own dedicated capacity and provisioning logic, but all services talk to the same database clusters and share a significant amount of code, like ORM models.
We're hoping to loosen the coupling between our services & our database clusters in the future by putting something like a Kafka data bus in between services that need to do extra processing on mail data, so we can fan out to more services & keep the mail ingestion logic lean. If that kind of project is exciting to you I'd love to talk. :)
There are some more details in this talk if you're curious:
youtube.com/watch?v=IstUaWa8NBE
Hi Christine. I'm a high school student currently working on an open source project that scaled so large we are in need of horizontal scaling. My collaborators and I have recently opted to use RabbitMQ mainly because of how simple and easy it is to use. Out of curiosity, what are some of the reasons you want to use Kafka over other message brokers?
If you could give your 15-year-old self career advice, what would it be and why?
quit caffeine and alcohol sooner, if you're happy and take care of yourself this will help you in all your endeavors
(Additional context: I am a small person and substances affect me a lot. I'm better off not partaking for the most part.)
Are you projecting any trad climbs right now??
yes!!! my favourite piece of rock in the whole universe is the Incredible Hulk in the High Sierra! mountainproject.com/area/105852180...
Last year I climbed Positive Vibrations (5.11A) with falls in just three places, and I'd like to return this year to keep working on sending the cruxes. And one of my main climbing partners and I made a pact to go start working on the next step up as well, the Sunspot Dihedral (5.11B).
Long alpine crack climbing is what I dream about at night; it's hard for me to consider single pitch climbs "projects". :-P
Ahhhh that's awesome! I'm just trying to get lead certified over here 😅
:-D gotta start somewhere! do you climb outside at all yet?
I did one guide-led ice climbing trip a couple years ago. Other than that, no. It's my one big personal goal this year to get outside!
Hello Christine! Was the Linux community welcoming to a 15 year old? How forthcoming were you about this?
Hi Mac! Great question. When I got involved it was through this super cool group called Debian Women (debian.org/women/). It was new at the time and a lot of really great Debian contributors were involved! They were super welcoming and actually found it super exciting that I was so young—as an example, one of the women in the group, Erinn Clark, found it exciting to have a "teenage ch1x0r" involved. I even wrote a blog post about this at the time! blog.spang.cc/posts/__35__debian-w...
The community also asked me what they could do to make Linux more appealing to teenagers, and I wrote a post for that as well: blog.spang.cc/posts/Linux__44___Op...
Pretty fun to look back at the stuff I posted in 2005. :) I can't speak to other communities, but I felt in general that open source was above average in terms of ignoring age in favour of demonstrated abilities.
That's really great to hear! Thank you for sharing this.
Hey Christine! Thanks for doing this! How has open source changed since you first began contributing?
"Open source" has pretty much won, in that developers these days expect their tools to be open source and therefore serious tech companies expect to be involved in open source communities in some way in order to be competitive at hiring and retaining engineers. It's just a given. Even Microsoft has turned around. I didn't have a job yet when I got into software, but my impression was that wasn't so clearly the case at the time.
("free software" on the other hand, hasn't won at all, but that's a different story)
What is the difference between the job of a CTO vs a VP of engineering or other senior technical roles in your opinion?
Hi Ben! Thanks for asking!
The answer to your question depends a lot on the company in question. At Nylas, the breakdown we use is that the VP of Engineering is responsible for people and process, and the CTO is responsible for architecture & technical direction. It's a little messy in practice; I actually have a few engineers who report directly to me, but I don't create the process around 360 reviews, retrospectives, eng career ladder etc. The CTO and VPE roles are meant to be complementary, and whatever split they take on depends on the strengths and weaknesses of the people involved.
In some companies, the CTO is more of a business-y role rather than architectural, and it's possible my role may grow in that direction somewhat over time.
Thanks!
What are some things you wish every developer would take into account/know when it comes to email?
it is hard, you need Nylas ;)
Hey Christine — what do most devs not understand about emails/contacts?
Sync is a very difficult problem, and layered complexity + many client & server implementations means a ton of edge case surface area.
Nylas is one of those companies where some folks' initial reaction is "I could build that in a weekend" and then they go off and try to build it themselves and regret it.
if you want to hear about more specific horribleness, the first 15 minutes of this talk I gave last year gives an overview: youtube.com/watch?v=IstUaWa8NBE
Hi Christine! What stack is Nylas primarily built on, and why?
We're a Python shop! Honestly, we chose Python in the early days because (1) every MIT undergrad learns Python, so both myself and my cofounder knew it, (2) Python is a very productive language for developers so it's great for building MVPs and (3) Python is "batteries included", meaning it's got a super useful standard library and also a ton of high quality third party libraries for doing just about everything, so we were able to focus on building the logic that was specific to our product.
We've been lucky that Python has scaled with our growth, and that new features like mypy-lang.org/ make it possible to make large codebases manageable in a dynamic language.
We also use MySQL and redis pretty heavily, and we're built on top of AWS just like every other startup out there.
What's the MIT undergrad program like?
heaven and hell!
Do you mean the classes, or the whole experience of being an MIT undergrad?
Every few years there seems to be a technology, either touting itself or touted by other people, as an email/IM/text-message/website killer. Yet these core technologies are still around and being developed and bettered. Do you feel there is a "next-big-thing" around the corner to truly shake things up (e.g. the impact cloud computing or containerization has had in the systems world) for the end-users of technology?
I vouch more for evolution than revolution. I think ML/AI have promise to help us create tools to cope with the huge volumes of digital information we're generating, and that VR and voice control are pretty cool. I am super bearish about the whole blockchain fiasco.
For communication technologies, network effects are huge. That's why tons of email killers have failed—there are millions of servers comprising the global email infrastructure, and most suggested replacements offer some better features in exchange for losing the existing network and the open protocols that allow many different service providers to interoperate. Email needs to move forward in a way that doesn't leave that network behind.
Hi Christine!
Are there any funny, unintuitive gotchas/things to consider when working with email technology?
Hi Christine,
How did you get interested in computers and technology?
Basically, the trajectory went like this:
This is great
What are your two favorite Linux distros and why?
Debian and Ubuntu, Debian because I've been using it for coming up on 15 years and have a key in the keyring, meaning I can even upload new packages and make changes (I'm an official developer), and also because I've made a bunch of friends in the community and being involved there changed my life and resulted in me going to MIT and becoming a software engineer. I still run Debian on my laptop today, despite several bets from coworkers that I am going to get tired of it and switch to a Mac.
Ubuntu is the runner up because it's based on Debian and very popular. :) Debian is considered so technically rock solid that there are literally hundreds of other Linux distros that are based on it, of which Ubuntu is one: wiki.debian.org/Derivatives
Which are your go-to programming languages for different types of problems?
How much do you think contributing to open source has changed over all these years?
And as a CTO what do you look in a developer when hiring?
When I started working on open source software, there was no GitHub. There was no git, either. Now there is GitHub, and everybody uses it. Git won the version control wars. GitHub made git and version control much easier to use, and it easier to contribute to projects. It may have centralized a decentralized system more, and it has its fair share of problems as a company and a platform, but overall it's had a huge impact on how people share code and collaborate on software.
As for what I look at in a developer when hiring, in no particular order: great communication skills, empathy, humbleness, self-awareness, a growth mindset, enthusiasm, buy-in to the idea that diversity & inclusion are worthy things for a company to invest resources in, and of course, ability to write good code in at least one modern programming language.
Christine,
what can you and your colleagues, at Nylas and throughout the industry, do to reassure customers and the public at large regarding their privacy and the confidentiality of the data which is entrusted to your applications and your server infrastructure ... including the threats posed by state-level actors? How do you address encryption in-flight and at-rest and what can be done about improved key management? What would you see as the ideal progress in these issues for the industry and the whole Internet?
Are there specific angles you are interested in? This is a really broad topic and it's tough to answer comprehensively.
We follow industry best practices for managing our infrastructure, including relevant compliance certifications and regular pen-testing, and have in-house security expertise. We support and are compliant with EU-GDPR. Of course, there are lots of unsolved problems in security and best practices alone won't guarantee that you will never face a data breach, but it's the place to start. All data is encrypted to and from our servers unless your email server doesn't support TLS, and we disallow the use of deprecated, insecure TLS versions for all connections to our API. All of the messages that we sync are stored encrypted at rest.
I am not a key management expert and would have to check with my team on their thoughts about the future there.
With regard to state-level actors, we comply with the relevant data request laws the same way the providers of the email accounts we integrate with do, though if we thought a request we received was unethical we would consider refusing.
Email is fundamentally insecure in its current form, and if you're seriously concerned about state-level actors, I recommend you use Signal for your private messaging needs. It doesn't support all of the features of email, but it's very secure.
That said, I'm also cognizant of the part Nylas is playing in the evolving ecosystem of apps that integrate with email, and the issues surrounding platforms enabling access to sensitive data. Right now, most email systems have all-or-nothing controls for apps that need access to your email, and in some cases do not even support revokable access tokens for apps. I see finer-grained access controls as essential to being able to scale a platform surrounding email. That means being able to grant limited access---read-only, for example, or to be able to access only emails in a specific folder. We're not there yet, but we want to push email forward in this way, because people want tools to be able to connect to their email and they're here to stay.
I think that trust is a fundamental part of human society and I don't believe in the techno-utopian viewpoint that we can create institutions that don't require trusting anyone. Whatever solutions we come up with will be part technology, part laws and regulations with consequences.
can you give advice about the path should take to learn cs
i took courses in html5,css3,js
but in the same time i took courses like python for everybody in coursera
and solve most of hackerrank about python except math and re but i understand
re to good level
cs50 edx,programming languages coursera which use 3 languages in it sml,racket,ruby
and other courses on java i start learn in 2016 my plane is to learn
scala to learn functional programming and learn
course in java or c++ to learn oop and i start to study algebra currently
is there any advice you can give it to me
What advice would you give to someone without a CS background to work towards the position you are in today?
Lots of my favourite engineers have no CS background and you don't need one to be a great engineer or a great leader!
It helps (OK, at least for the engineer bit), and some people may judge you for lacking it. But the people you want to work with won't.
First and foremost, you need to become skilled technically before pursuing a leadership position in software engineering—find a place where you can learn from more experienced engineers and hone your programming skills. Once you've reached an adequate skillset, start a company or join a very small one that needs your skills. Trust others a lot and listen to them.
Cool! I have questions!
Sorry if the questions were quite a lot. I'm genuinely curious.
Who is the most impressive programmer/computer scientist you have ever worked with?
Nelson Elhage blog.nelhage.com/
We worked together at Ksplice and I email him whenever my team needs advice on a hairy technical problem. Super smart, super pragmatic, and a kind and humble human being.
Not all the employees in the company are satisfied with the work they do. What do you do when one of your employees are not feeling challenged or satisfied enough about the work they do?
It'd be great if you could talk about your thoughts and experiences on developing your company culture! What advice would you give to people/companies trying to foster a similar culture?
If you could pick a software or technology you wished you had built, wich one would be and why?
How you got started in open source community
What/who are your inspirations for coding?
Would you prefer contributing to small open source projects or to large and 'famous' ones, if if you could start again?
What was your very first program?
hmmmm, that's a tough one! probably the exercises in the K&R C book. :) (amazon.com/Programming-Language-2n...)
I have a habit of diving into the deep end.