When the Pixel 3 was announced a few months ago there was a lot of press about the incredible Camera and the enormous Notch. Lost in this noise is a wireless charging accessory that Google calls the Pixel Stand.
The Pixel Stand is basically a standard wireless charger. It’s just a piece of plastic with no visual user-interface. Some say it’s overpriced at $79. Like I said, it’s a boring plastic stand.
But it completely transforms the Pixel 3.
This boring plastic stand transforms the Pixel 3 into an Assistant…
This boring plastic stand transforms the Pixel 3 into a photo frame…
This boring plastic stand transforms the Pixel 3 into a gradually brightening alarm clock…
Google is onto something by transforming your phone when placed in situations like on your nightstand or on your desk. Perhaps the most interesting part about all this is there is no software on the boring plastic stand. It’s all in the Pixel 3 phone.
When you place the Pixel 3 onto the stand it goes into a special mode. When you take it off it goes back to being a regular phone. It’s pretty magical to see your phone transform into something else just by putting it onto a boring plastic stand. I hope as mobile devices continue to evolve we’ll see more of these thoughtful transformations.
Have questions about the Basecamp 3 Android app? Let our awesome support team know by sending us an email.
You could always Add a To-do, Upload a File, Post a Message, or Add an Event right from the Home Screen. Most people, however, just needed to browse projects or the Hey! menu without the “Big Green Add Button” in the way.
Now you can simply swipe up on the Home Screen navigation to reveal these Quick Add options. We’ve also added a list of Recently Visited sections for easy reference. Just tap on one of these to jump right back to it.
2. Comments with Image Galleries
We’ve improved the interface for commenting on Basecamp Messages. Now you can format your comments using Bold, Italic, and Bullets. You can also select multiple images to attach to form an Image Gallery in Basecamp.
Tap the Paperclip icon. Then select the images one at a time in the order you want them to appear. Tap Upload Files, and they’ll be grouped together into an Image Gallery. You can add and edit captions too.
3. Reply Directly inside a Notification
If your phone supports it (Android 8.0 and above) you can now have Basecamp conversations without opening the app. Just reply to a Ping or Message notification. You’ll see a running history of what’s been said.
We hope these features help you get around Basecamp easier, give detailed suggestions, and reply to discussions without losing focus. We’ve got more planned! Stay tuned. Until then, get the latest on Google Play.
If you’ve been paying attention to what’s been going on in our community — conferences, meetups, blog posts, podcasts, open source (the list goes on and on) — you’ve probably noticed a really wonderful energy and spirit behind them all. Yes, our community is healthy and thriving!
And while things are really good today, I do think that we all have a responsibility to think about the future of our community — to really consider what we’re going to do to help shape what it will become, not just for ourselves, but for all the new folks that will be coming into Android for many years to come.
But before we get into the future, let’s take a step back and consider why our community even means so much to us. Why do we even care? The best place I can think to start is my own story.
🤤 My (boring) story
I started with Android back in 2014, which wasn’t really that long ago. I had been writing Java for a long time before that, but didn’t know anything about Android. So I had a bunch of stuff to learn — all the APIs, UI frameworks, etc. were all new to me.
Like many people, a natural place for me to learn was at work, on the job. And that’s exactly what I did. I learned a lot from my coworker Jay. Jay really taught me the ropes and helped me get off on the right foot. He put up the guardrails so I wouldn’t go careening off the side of a cliff.
Turns out though that Jay has a life, a family, and his own work to do. He couldn’t be my personal Stack Overflow, 24/7. So yes, of course, there are limits to what our coworkers can provide. They’re a wonderful people that help us in our projects and day to day work, but naturally they have a bunch of their own stuff to do!
And so like just like everyone else, I started Googling around for resources that would help me become a better Android developer. But what I found wasn’t just a bunch of “resources”. Instead I found an incredibly rich network of teachers.
My peers were out there teaching and offering help without asking for anything in return. They covered every kind of topic and every kind of app. It was really amazing to see, and these teachers became a big, big part of how I learned and got a lot better at Android.
In fact, I’m certain that I don’t reach this level in my career without them. That is why this community means so much to me — I’m literally not here today without the help of all of you out there. So thank you!
I bet a lot of you feel the same way and maybe have similar stories. If you stop for a second and think about it, we’ve all been impacted by these amazing contributions in some way. Think of the conference video that got you really jazzed about something for the first time. Or the blog post that finally, for the first time, helped a concept click in your brain. And of course there’s all the open source work that all of our apps are built on.
And so if you think about how much benefit we’ve gotten from this community and what a positive influence its been on us, here’s a scary thought…
🙀 Can you imagine if this community didn’t exist?
What would happen? Well, for sure our jobs would be a lot harder, they’d be a lot less fun, and a lot less interesting. We’d find ourselves solving the same problems over and over, and it’d get tiring and tedious real fast. I wonder how many of us would even be making Android apps still.
Now of course our community isn’t going to magically disappear or anything like that. But I do think it’s healthy to occasionally reflect on stuff like this — to make sure we don’t take things for granted, and to help us appreciate what we have.
And this thought, as scary as it is, does highlight one really important aspect about communities that people probably don’t think about too often: that sustaining a healthy community is really hard work.
Sustaining any community is tough, and it’s especially difficult to sustain one at a high level like our’s is at. Communities don’t build themselves, they’re not some miracle of the universe. They’re the result of hard work of thousands of well-meaning people, donating their time and effort to help all of us.
I think this can be easy to forget sometimes because there are some folks within our community who are super-pros at doing this stuff. They make it look so easy, you could be forgiven to think that it’s no big deal for them to create these contributions.
But in reality it’s hundreds and hundreds of hours of effort to build these things. Whether it’s maintaining an open source project, prepping a talk, putting on a conference, or the dozens of other types of contributions, these things take a lot of time to put together. And often people are doing this on their own personal time. I don’t say this to make you feel bad for these folks or make it seem like they’re martyrs or something — it’s just to level set how much work really goes into this stuff.
The other thing that makes sustaining a community tough is that Android moves really fast. If you look back 2–3 years almost nothing is the same. Hell, if you look back a few months at Google I/O, almost nothing is the same! This is awesome and exciting of course, but it also means it’s really hard to keep up and cover it all. There’s a wide surface area of topics, and a relatively small number of contributors.
And so because it’s so much work, and because things move so fast, what you often see is that there are natural ebbs and flows to contributions. It’s not uncommon to hear about people taking a break from giving talks, or perhaps you’ve seen an open-source project go unmaintained. Life happens, work picks up, or any number of other factors can play a part, and this is absolutely natural and OK. Of course people deserve a break and should only contribute when it works for them.
But because people are cycling out, we need to make sure that we’re also cycling people in. And so if we truly appreciate this community, and you’ve positively benefited in any way from its contributions…
👉😳 We need you to become contributors
This is especially true for folks who haven’t been super active before. It’s really important to remember that new voices are a key element in moving us in the right direction.
New folks bring many important qualities to the table, but there are two that I really want to highlight.
Your energy. When starting something new, people have a natural energy about them. You’re excited and energized by the possibilities, and that’s important. That energy has a halo effect, not only around those you’re with every day, but also to other members of the community — that energy is contagious! When we see someone doing something new and exciting and full of enthusiasm, that keeps us motivated, interested, and energized too.
Your diverse perspectives. We don’t want to become a stagnant community of unchangeable ideas. New people naturally bring in fresh ideas, new angles, new ways of thinking, tend to challenge the status quo, and bring up issues that we might be blind to.
These two qualities are really, really important for us to have within our community. But unfortunately, a lot of times when encouraging new folks to get involved, there are a couple common retorts that I’ll hear.
“I have nothing new to say.” There’s this common misconception that people have. This idea that “I have nothing to contribute” or “Everything I would talk about has already been said by someone else.”
And while I understand where you’re coming from, I’m sorry to say you’re 100% wrong. You dohave something to say whether you realize it or not.
Here’s the thing: the sum total of your life experiences, everything that’s gotten you to where you are today — your journey, your struggles, your successes — are incredibly unique and valuable. And because of that, someone out there can learn from you.
Even if by some chance you and I had the exact same skill level and were giving talks on the exact same topic, there’s no way that it would impact the same people the same way. Your unique vision of the topic, how you express it, and your perspective that’s been built up all your life carries an inherent value that nobody else can recreate. End of story.
“I’m just a beginner.” This is the other thing I’ll hear a lot — this idea that “I’m just starting out and I’m not an expert”. But what you may not realize is that, in some ways, being a beginner is a huge advantage that you have. How can that be?
“The essence of making an idea clear requires a deep understanding not only of the idea but also of the person to whom one is explaining the idea.”
That makes a lot of sense, right? Now I could expound on this, but why do that when my esteemed colleague Christina Lee has already done that so eloquently.
Exactly! You were just in the person’s shoe’s, of course you’re in an excellent position to explain it to another beginner more clearly than an “expert”. Some of us are so far removed from being a beginner that sometimes we’re not good at teaching — we can glaze over important steps, make a lot of assumptions, and even use different language. But as a beginner, you are immune to all of that, and that in many ways makes you a perfect teacher.
All that to say, you have to get those negative thoughts out of your head. Forget this idea that you have nothing to say, that you’re “just” a beginner, or whatever other doubts you might have. I guarantee you every contributor has said this or something similar before they got started.
The thing that’s hard to see until you jump in is that this is one of the most open, accessible, and encouraging groups of people you could be a part of. Everybody is, in my experience, incredibly nice and willing to help other get started.
A quick story — a little while back I was thinking of doing my first talk. I had never even submitted a proposal much less give a talk, so I had no idea what I was doing. I saw that Android Summit was coming up, and it looked like a good place for me to get started and so I was interested in submitting a proposal.
But like I said, I hadn’t the slightest idea what i was doing. So I looked up who had previously spoken there, and I saw that Huyen Tue Dao had given a talk the previous year. Now at this point, you have to remember, Huyen and I aren’t friends. Hell, we had never even talked to each other before. But out of the blue I sent her a message and asked for her opinion.
It was incredible! She gave me so much encouragement and advice, I could barely believe it. I went in the conversation cold and anxious, and came out excited and enthusiastic. And remember, we didn’t even know each other at all! Here’s a tiny excerpt of what Huyen told me from that conversation:
“Yes, you should totally propose a talk. Do it. End of story. If you have any questions let me know. You gotta go for it. Would love to help. You’ll do great! Let me know!”
That is an amazingly warm, open, encouraging way to treat someone you don’t know! To that end, I think it’s a wonderful embodiment of what our community is like.
The other thing that’s tough to realize until you get going is what an immensely rewarding experience being a contributor can be. If you think about it, there aren’t many professional endeavors where you can…
Help others, teach, and pay forward all the things you’ve gained
Make new friends and contacts all across the world at many companies
Improve your own skills and your career prospects, at the same time
If nothing else, those are three pretty damn good reasons, don’t you think?
🙌 So you’re convinced, right?
I hope at this point you’re convinced that our community is immensely important and valuable, that you absolutely have an important voice, and that we need as many people as possible to contribute to keep things going in the right direction.
So your next logical question might be, “OK, what do I do now? How do I start?”
Well lucky for you I’ve thought of four ways you can contribute. Each one is a little bit different, and I picked them because I think they might appeal to a range of different personality types. I hope there’s a little bit for everyone here. I’ll go into each one broadly and give you a few tips on how to get started. (These four are, of course, not the only things you could be doing, just the ones I happened to pick.)
Let’s get started!
✍️ Contribution #1: Writing
Writing is really near and dear to me, and it’s one of the most important skills you can have. I think many of us have probably read a blog post at some point that had a big impact on us or helped something really click for the first time. And given that so much of our work is writing — chatting, pull requests, feature descriptions, etc. — you could argue that it’s a vastly under-appreciated skill.
Specifically, there are a few things that make them immensely useful to our community.
It’s information dense. The written form is capable of carrying an awesome amount of information — they’re often packed with diagrams, explanations, and code snippets. Pound for pound, nothing can really match a written post for learning, especially compared to something like video or audio.
It’s self-paced. People can absorb the information at their own pace, which is really, really important for learning. I don’t know about all of you, but I usually have to read things at least twice to make any sense of something, sometimes more. Others can probably blow through stuff very quickly the first time. But that’s why it’s great — no two people learn at the same pace, and writing is by far the easiest way to guide your own pace (again, compared to something like audio or video).
It’s an excellent reference (basically forever). Once you’ve created something, you’ll find that it serves as an excellent reference on that topic for many years to come, especially if it’s on a topic that doesn’t change that often.
There’s this great tweet by Kelly Shuster regarding an article that Amanda Hill wrote a while back on image scaling types, and she’s absolutely right. Being able to go back to that article, time and time again, is a huge win.
Our friend Chiu-Ki Chan has expressed a similar sentiment, saying how she often writes to serve as a reference to herself, which is tremendously helpful too.
So if writing sounds like something you might be into, a few things to keep in mind.
Writing tip #1: Practice editing (a lot) ✂️
When you first start writing, one of the hardest things to do is to write clearly. And one of the best ways to improve clarity is to edit.
I read so many things every day that could benefit by a good round of editing — an email, a blog post, a news article, and so much more. Now this isn’t a criticism of those writers, far from it. I think it’s just a reflection of how hard it is to consistently write clearly. Hell, I struggle with it plenty, too. It’s a learned skill and it takes a while to get good at it.
Editing is a big topic so I don’t want to get too deep into the nuts and bolts of it, but there are three “types” of editing that I think would serve you well when writing for the community.
Cut the fat. I think this is probably the one that most people think of as editing, and rightfully so. Condensing everything to the bare minimum, using as few words as possible, and still clearly expressing an idea is incredibly important.
But there are two other kinds of editing that I think people sometimes forget about.
Revise and reorganize. A lot of times a good round of editing isn’t just about cutting things out. At some point there’s going to be a diminishing return for paring down your words too much. Sometimes editing is just about moving stuff around — moving a paragraph, sentence, or even just a single a word— to improve its clarity. Don’t forget that!
Use simpler words. One of the easiest traps to fall into is using complex language. I do this all the time too, I think because it makes me feel really smart or witty. But the reality is that if you have a choice between a simple word or a complicated/fancy one, always pick the simpler one. It will almost always serve you better, be easier to understand, and therefore will be more valuable to the reader.
Bottom line: editing is absolutely crucial to writing well. Practice early and often!
Writing tip #2: Claps are not a measure of success, impact, or value 👏🚮
It seems like every site these days has some way of providing “positive” feedback. Twitter has hearts, Medium has claps, and on and on.
And sure, I’m not going to lie to you, it feels good to get a lot of those. If you write on Medium and you get a ton of claps, it feels like you did something great and important — like you really struck a chord with people.
But if we’re being honest with each other, they’re all bullshit metrics.
From my own personal experience, some of the best things I’ve written that I was most proud of got very few claps or attention. And some of the most outrageous, antagonizing shit that I wrote got an absolute ton of claps. Does that make the latter more successful or more valuable?
Of course not. You absolutely cannot measure the impact that your writing can have by some arbitrary metric like claps, which are designed for Medium to get readers and clicks, not to serve your writing.
I really want to drive this home because sometimes new writers will think “Well, nobody clapped for my writing, so I’m not helping anyone. There’s no point in continuing.” And while I understand why you might feel that way, I urge you to persevere.
It’s possible that your work will live on for years and years, and eventually find its way to helping someone. Plus, how do you really know that it hasn’t helped someone? As unfortunate as it is, we often don’t read something useful then go through the trouble of contacting the author and tell them how much we appreciate it. For all you know, your article has made a tremendous impact on someone, they just didn’t go through the trouble of going back and saying thanks.
And worst case, remember you’re not just helping others, you’re helping yourself! I guarantee you that while you were writing the post, you learned something useful. And on top of that, you’ve got a wonderful bit of writing for your portfolio.
Don’t get too hung up on these bullshit metrics. You’re creating something useful, giving back to our community, and building up your skills and portfolio at the same time. Forget the claps and focus on the writing.
Writing tip #3: Have a strong opinion 💪
Don’t be afraid to tell it how you see it. We talked earlier about how writing clearly is one of the hardest things to do, and this is another way to really improve that.
Having a strong opinion means you are inherently being clear. When you’re being direct, that’s clarity. When you’re being wishy washy or qualifying every statement with “You may not all agree, but I think…” then your writing and clarity suffer badly.
Now of course that doesn’t mean you’re not responsible for what you say — far from it. You are absolutely responsible for being respectful, accurate, and convincing. But while doing that, be confident, be convincing, and say what you mean.
And hey, if everyone doesn’t agree with you (which they certainly won’t), don’t fret. Discourse, discussion, and disagreement is a normal, healthy thing in a active community. If you’ve riled up a few people and got ’em thinking, you’ve done good.
🗣 Contribution #2: Speaking
If writing isn’t your thing, maybe you’d rather just say it from a stage?
Speaking definitely isn’t for everyone — it’s insanely nerve-racking and an absolute ton of work. We’ve all heard the statistic of how people fear public speaking over death, right? Sounds like a blast!
The good(?) news is that this doesn’t just affect new speakers. Even the most experienced speakers run into this. Hadi Hariri, Kotlin guru and developer advocate at Jetbrains, aptly said:
Pretty damn accurate! So given how terrifying and hard it is to do, why would anyone want to do this? Well, there’s one amazingly thing that speaking can do better that no other medium can do…
Speaking is the single best way to inspire and motivate.
If I think back on the things I’ve often been motivated or inspired by, they’ve been talks. Whether they were conference talks about technical topics or a a Ted talk about life, these speeches have always had the greatest impact on me. Writing and reading are awesome, but they simply don’t convey the same kind of energy and excitement as someone speaking on stage. This is why people go see live events!
Another reason you might be interested? Well, speaking is “fun”, in sort of a sadistic, strange away. There is an amazing burst of excitement and energy that you get as your talk gets close, and nothing gets your ass in gear faster than a speaking deadline. And when it’s all done and you walk off that stage, it feels really rewarding when you pull it off.
And lastly, speaking has the potential to open up new opportunities for you. Donn Felker has this great article that he wrote a while back about the first time he publicly spoke. He talks about how he blacked out and all the nerves, but the most important thing he said was this:
“That one day led to many job offers…to do bigger and better things…I decided to jump and go work for myself as a consultant. How? All from speaking.”
For me the opportunities weren’t so much professional as they were personal — the connections and friendships that I’ve made from speaking are the most important “opportunities” that I was able to unlock. I’ve met some truly incredible people and developed friendships that I would’ve never otherwise.
So, if that sounds like your cup of tea, what are some things to keep in mind?
Speaking tip #1: There’s no right or wrong way to start 👆👇👈👉😕
When you first start thinking about speaking, you’re going to have a lot of questions. Where do I do my first talk — brown bag, meetups, conference? How should I prepare? What topic should I discuss? How do you write a CFP?!
And while of course those answers do matter, the key isn’t to get those answers — the key is to START.
Start down the path you think is right. What you want to avoid is becoming completely paralyzed from being unsure and trying to do everything “right”. Try to start answering those questions yourself, and see what you come up with.
After you’ve gotten going, start soliciting for help. Ask people for their opinions and work them into what you’re doing. But at the same time, don’t take any advice as gospel. It’s important to remember that ultimately it’s going to come down to knowing yourself and doing what you’re most comfortable with.
As an example, I’m really weird. The first talk I ever did was at a conference. I prepare by writing my slides and practicing by myself — literally nobody ever sees my talk before I do it. I pick a topic I’m interested, and I write the CFP myself without any feedback.
That works for me. If you couldn’t tell, I’m fiercely independent and slightly neurotic, so I tend to do a lot of stuff myself. So far it’s worked out fine for me, but it’d probably be terrible advice to give to most everyone else.
So yes, take the input from others. But most of all understand yourself, what your preferences are, and get started.
Speaking tip #2: Be yourself on stage 🤪
Another thing that’s tough to do when you’re just starting off is figuring out your “style”.
If you’ve ever seen me on stage, I wave my hands around like a madman. My slides are brief and have a bunch of silly emoji on them. If you’ve ever seen Mark Allison speak, he opens with a magic trick almost every time. If you’ve ever seen Christina or Huyen speak, they do live coding. I wouldn’t dare attempt either of those as I’d probably kill someone.
It’s easy to think that just mimicking someone else’s style is the answer, but it most likely isn’t. You’ll ultimately need to find a way to do things that feel natural to you. And while it might take some work and introspection to figure that out, the biggest benefit is that it’s going to make preparing and presenting a lot easier. When you practice by doing what comes naturally to you, it makes the final show on stage a hell of a lot easier.
And remember, people are there to see you, so be yourself!Of course they’re interested in the topic, but they came into that room to see you talk about it, not someone else. Be proud, be confident!
It’s satirical and funny, but at its core has some really good tips on some of the tactical things you’ll want to avoid in a talk. Highly recommended.
Speaking tip #3: Don’t forget, we’re rooting for you! 🤗
This may sound obvious, but it bears repeating especially when you’re anxious on stage: we want you to do well!
Literally nobody wants to go back to the office and say, “Wow, I saw Dan completely implode on stage. It was a disaster and it was awesome!” We want to go back and say how much we learned, how great the talk was, and how inspired we are to get cracking on something new. What you as a speaker want and what we as an audience want are exactly the same.
You’ve done the work, so relax. Execute. You’re ready. And really, what’s the worst that happens? You flub a couple lines? Nobody will notice. You fall of stage? Hell, you’ve got an amazing story to tell.
And remember, when it’s over, it’s over. It’s a success no matter what because you accomplished something that most people can’t. Be proud of that and don’t look back or nitpick your work. You did it!
🧙 Contribution #3: Mentoring
This type of contribution is for folks who aren’t really into putting themselves out there in a public space that reading and writing demand. But that doesn’t make it any less important and valuable, not by a long shot.
So many people need mentoring, but I think it can be easy to forget how hard is to be a beginner who is just getting started. When you’re just starting out (if you can remember) you crave direction and guidance, and it can be hard to find that.
What’s wonderful about mentoring is that you can provide exactly what people are looking for. Even better, the work you put in doesn’t just have a positive effect for a few months — you’re setting someone up for long-term success. You’re establishing the foundation of how they’ll do their work for years to come, and that has a compounding effect for all the people they’ll eventually work with and mentor themselves.
And I have to say, there is nothing like seeing someone grow right in front of you, sometimes far beyond you. It’s by far one of the most rewarding things you can be a part of.
So if that sounds like something you’d want to do, here are some things to keep in mind.
Mentoring tip #1: 100% expertise is not required 📚
It probably goes without saying, but you can’t possibly know everything. But sometimes I think people avoid becoming mentors because they feel like they don’t know “enough”, when in reality they probably know plenty.
What’s more important than having all the answers is to be able to show your approach — to share how you think about things and work a problem. That’s almost as important as any answer you can give.
In fact, showing that you don’t have all the answers and make mistakes is a wonderful thing too. When beginners see more experienced folks struggle, it’s a welcome reminder that we’re all just figuring this out as we go.
Mentoring tip #2: Advertise yourself 📢
Another thing that’s easy to forget is that as a beginner, it’s hard to ask for help. So let’s flip it.
As someone with experience and knowledge to share, put yourself out there — whether that be publicly, at work, or just on a small team. This doesn’t have to be formal or some big announcement, but it should be specific. If you’re talking to someone and want to offer help, say so. Tell them you are willing to help out or mentor, directly. that’ll make it a lot easier for someone just starting off to approach you when they need help.
And what’s been great is that within our Android community, we’ve had people offering this exact kind of help publicly:
It’s just wonderful seeing people in our community do this. And by the way, if you haven’t taken up Nick or Dan on their offers, you should!
And remember, there are a lot of different ways to help. No mentor/mentee combo is the same. You can offer to informally review someone’s work, go through code or a pull request, or even just sit down and shoot the shit. It depends on your dynamic and what the person is looking for.
Being a beginner is hard, so let’s make it easier on them and help build our community from the ground up.
Mentoring tip #3: Provide guidance, avoid answers 👩🏫
Said another way, be a teacher, not an encyclopedia. Anyone can look up an answer on Stack Overflow and implement it, but it’s much harder to understand the thinking behind a solution. And really that’s what matters.
Your goal should be to guide them toward an answer, rather than give them the answer. Giving the person an opportunity to think and problem solve is ultimately going to make them a better developer in the long run.
One of the most common, convenient ways to do this is in a pull request. Instead of offering specific code solutions, consider just asking questions. Instead of pasting in a code snippet, ask “Have you considered trying this approach” and offer up a pseudo code alternative.
Sure, there are going to be times when a specific answer is going to be exactly what the person needs, but more times than not, the path toward an answer will serve them best in the long run.
👩💻 Contribution #4: Open source
OK, this is the big one, the one we all rely on. Perhaps it goes without saying, but this is an excellent, excellent way to give back — you could argue it’s the most important. I probably don’t need to tell you why it’s so important, but I’m going to anyway. 🙉
First, you can make a huge impact. Obviously if you make a library that a bunch of developers use, your work will directly be impacting thousands and thousands of customers. Your impact will enormous, which you have to admit is pretty damn cool.
Secondly, and I think somewhat overlooked, is that working on open source is a powerful way to learn. At work you usually end up working on the same closed source app, with the same people, and the same patterns. This isn’t a bad thing of course — that kind of continuity and stability is wonderful.
But when you work in open source, you can learn a bunch of new ways of doing things. You learn how other people and teams operate. You learn other ways of approaching problems. You consider different factors when you’re not writing closed source. The list goes on and on. By doing something out of the norm from your “regular” work, your opportunity to learn grows tremendously.
Finally, working on open source is an instant resume builder. At Basecamp when we hire programmers, the first thing we do is ask for code to look at, because that’s the thing that matters the most (at least to start with). The problem is when you’re looking for a new job, a lot of times your old company is not exactly going to be offering for you to take their closed source code with you to show off.
The great thing about open source is that you have a portfolio ready to go. At any moment you can point to the work that you’ve done in open source and any prospective employers can immediately see the breadth and depth of your contributions. That makes you immediately more marketable.
Sounds good right? Here are a few tips to get started.
Open source tip #1: Every little bit helps 🦐
As you get started in open source, remember that your contributions don’t have to be huge. You don’t have to work on some major overhaul of a project in order to make your mark.
There are a bunch of little things you can do: fix a small issue in the issues list, update the README or fix up some documentation, or even just log a well-documented bug. These may not sound like important contributions, but they’re very helpful to maintainers. Everybody wins when you tackle some of the small stuff.
As you get more comfortable, you’ll find yourself naturally working into bigger issues and bigger sections of the code. Just give it time — starting small is great.
Open source tip #2: Discussion is good, code is great 💻
A lot of times on Github you’ll see really long discussions on how to implement something, and that’s a good thing. Discussion and discourse is usually a solid path toward well-designed solutions.
But sometimes discussions stagnate, start to get nitpicky, or just completely derail. There’s no exact formula to recognizing it, but you know it when you see it. And it’s times like that where code is great.
Code cuts through all of the noise. It’s a real implementation that can be discussed in concrete terms, not abstract ideas or theoreticals. You can bake off different approaches and determine the pros and cons of each. You can see everything in front of you instead of trying to piece together half-formed ideas from multiple people in your head.
If you’re ever in doubt on what to do on an open source project, just write code. Maintainers love pull requests and real implementations.
Open source tip #3: Be friendly and respectful 🤗
When a bunch of people are working on an open source project, you have to remember that it’s likely that these folks are spread across many continents, speaking many different languages, with backgrounds from many different cultures.
Personalities plus a thousand other variables makes interactions unique and probably a lot different than you’re used to. Miscommunications can happen. A lot of times people are working on open source on their own time. And even for those doing it professionally, it’s not an easy task to wrangle all those people and personalities.
So remember, generally speaking people aren’t trying to be dismissive or rude. More likely they’re just trying to be direct and cut to the chase. And hey, if you’re not sure and something makes you feel gross, you can always choose to take the (much harder to travel) high road and keep things positive.
Jessie Frazelle had this great tweet from a while back that summarizes it perfectly:
So that’s it — four areas that you can contribute to. I hope there’s something there that appeals to you. But if not, there are dozens of other ways to be an active member of our community. Find your niche! If you haven’t been super active before, I’d really encourage you to think about how much our community has meant to you and how much you can help others.
🎬 One year ago
The last thing I want to leave you with is this: one year ago, I hadn’t given a single talk, not one. And just a couple weeks ago I was standing on stage giving the opening keynote at Droidcon NYC.
Now I’m not saying that to make it sound like I’m hot shit or that I accomplished some amazing feat.
No, I say that to give you perspective. If you start today, who knows where you’ll be three months, six months, or a year from now. You could be the most eloquent writer, a prolific open source contributor, or a world renowned speaker. The key is that you just have to start now.
I can’t wait to see what you all come up.
Note: This was a transcription of my opening keynote from Droidcon NYC 2018 that I did from memory, so it’s not an exact 1:1 from the talk. If you want to see the actual talk, I’ll link up the video when it’s up. Here are the slides from the talk if you’re interested. Thanks!
Ping and Message excerpts, image previews, and grouped Campfires make catching up with Basecamp a breeze.
There’s a new Hey! screen design in Basecamp 3 for Android. Hey! is already pretty good on Desktop and Web. Currently you get a chronological list of unread Campfires you’re following and discussions you’re part of.
On Mobile, however, you’re probably peeking in for a quick summary of What’s New. Hey! should help you prioritize what’s important at that moment. A better design can save time.
Here’s how the current Android Hey! and this new design compare:
✨ What We Improved
Show me my Pings. Excerpts from unread Ping conversations are now shown at the top of the Hey! screen. If you have more than one unread Ping conversation they’ll be grouped together. You’ll see all your new Pings in one place. Note: All Pings are still accessible everywhere in the app via the top navigation. Just tap the “conversation bubbles” icon next to Search.
Group unread Campfires together. New chats from Campfires you follow are now easily scanned since they’re grouped together. The Campfire notification will also display who spoke last (which matches Basecamp 3 on the Desktop and Web).
Give context to Messages, Comments, and more. It’s a mystery what’s behind that unread notification. It might be 1 sentence, or 1 emoji, or a long paragraph. Now there’s an excerpt of text and image thumbnails so you can see what was posted without having to tap through.
💅 The Result: Better Insight into What’s New
Messages and Comments are no longer a mystery. Excerpts and image previews hint whether you should dive deeper or move along. Unread Campfires aren’t scattered across other notifications. You can prioritize chats you want to read.
The new design gives Hey! notifications more context. It helps you stay looped into Basecamp without having to tap each notification. Stay updated at your own pace.
🖼 Bonus: Swipe Through Multiple Images
We also updated our image viewer to know if a Message or Comment has multiple images. Now you can swipe back and forth between images! If there’s a caption we show that too.
We hope you like these improvements to the Basecamp 3 Android app (Version 3.9.1, updated May 1, 2018). We have a lot more planned and thanks for being a Basecamp customer—especially if you have an Android device!
Thanks for reading. If you have any questions about Basecamp 3 for Android please let us know.
— Brought to you by the Android Team at Basecamp: Jamie, Dan, and Jay
💨 Navigation takes you to Projects and Teams faster
🗺 Sticky titles and breadcrumbs keep you from getting lost
🎨 Themes and overall styling updated to match the refresh
💨 Navigation takes you to Projects and Teams faster
Whether you have one Project or one hundred, we know you’re using the Android app to check on Basecamp quickly, on-the-go.
📌 Pinned Projects and Teams are more prominent on the Home Screen. Quickly scan for the Projects that matter to you. These pinned Projects and Teams stand out when you’re sharing a video from YouTube or uploading a photo or PDF.
🔍 Quick Jump to a Project or Team by typing a few letters in Search. Just start typing in the Search field. Since Search is accessible on nearly every screen, you can quickly switch back and forth between two Projects.
🗺 Sticky titles and breadcrumbs keep you from getting lost
Basecamp keeps everything in one place. It’s not uncommon to follow a few discussion threads across different Projects. Perhaps you’re commenting on To-dos within various To-do Lists (also spread across different Projects). We’ve made it so you won’t get lost in the Android app.
🍯 Message titles stick to the top when you’re reading discussions. This is especially helpful after you’ve tapped a Hey! notification. Bonus: Tap the collapsed title to jump to the top of the Message.
🍞 Breadcrumbs show where To-dos, Docs, and Files are. Dive into a To-do List or Folder. You’ll always know where you are in relation to the rest of the Project. If the breadcrumb trail gets too long, just swipe the path side-to-side. This will reveal the beginning and end of the trail.
🎨 Themes and overall styling updated to match the refresh
The updated Android app has rounded buttons and softened corners to match elements of the Basecamp 3 design. We’ve also updated icons and colors throughout the app.
🖍 Customize your Basecamp colors by choosing a Theme in the Me tab. Bonus: If you have multiple Basecamp accounts, you can assign a different color for each one.
💯 Pings and Search are available from any screen. Keep a conversation going while you look at the details of a To-do together. Search for a link to a file to reference in your comment. Having Pings and Search available means less jumping around in the app.
➡️ This is just the start…
We’ve got more planned in the coming months for customers on Android. Until then, these new updates are ready for you in the latest Basecamp 3 Android app. Download it today on Google Play!
It’s kind of hard to believe, but we’ve been writing Kotlin at Basecamp for 20 months now! And with the first ever KotlinConf starting tomorrow, it felt like a good time to reflect on my time with Kotlin.
When I first started off with Kotlin, I was a bit…excitable. I was blown away by all the incredible things it could do. Compared to Java, it made my life so much easier and I was just much happier working with it. I was so excited to be learning this shiny new tech that I would tell anyone that would listen about all its wonders.
Now, almost two years in, things are different — in a good way.
The big thing is that I’m (mostly) past the initial “holy shit this is awesome” moments of discovery when you first come over from Java — finding out about all those crazy things you can’t do in Java, all the fantastic niceties that become your favorites, and all the little things that save you tons of time. Of course I’m still learning new stuff regularly, but for the most part I’m not running into any huge surprises day to day.
And so from that perspective Kotlin has become, well…uneventful. Wonderfully, lovablyuneventful!
At its best Kotlin is extraordinarily reliable, unfussy, and pragmatic.
And while those words might not generate feelings of uncontainable excitement like I experienced at first, they paint an important picture of how awesome Kotlin is, deep down. They’re the things that really matter in a calm (and consequently a productive) work environment.
It’s awesome that the language is rock solid stable after upgrades. It’s awesome that every feature has been thoughtfully considered and prioritized against practical, real-world uses. It’s awesome that JetBrains dedicated 5+ years to get to a incredibly stable 1.0.
And it’s awesome that once you get the hang of it, Kotlin simply gets out of your way so you can get shit done, fast.
At this point in my Kotlin journey, my daily workflow is calm, peaceful, and productive because it’s uneventful. I may not be shout-from-the-rooftops excited about every little Kotlin feature anymore, but that’s OK. What really matters most to me is that Kotlin is a rock solid, stable foundation for my work now and in the future. And that’s worth a lot when shipping good work is the one true reliable measure of success.
Past and present aside, the future is bright too. The language is progressing at a fast clip (coroutines!), and the tooling around it is getting better every day. And perhaps most importantly, community involvement — blog posts, conference talks, Stack Overflow answers, and libraries — continues to expand rapidly too. These are exciting times!
I’ve had so much fun over the past couple of years building Android apps, and Kotlin’s been a big part of that. The progression from initial excitement to calm productivity to looking ahead at its bright future has been an absolute blast. I cannot wait to see what’s in store for us at KotlinConf and beyond!
If you enjoyed this post, please do hit the 👏 button below. Thanks!
The Android Team has been on a roll, steadily improving the Basecamp 3 app these past few months. We’ve even added some new features specifically for Android 8.0 Oreo devices. Here’s a summary of all the good stuff we’ve added since summer.
Vastly improved image, media, and document handling
Easier to share links, text, images, and more from other apps and across Basecamp
Automatic links to invite people to your Projects and Teams
The ability to sign-up for a new account with a 30-day free trial
Introducing the new File Browser.
A brand new File Browser shows you a gallery view of the last 100 images, videos, and GIFs stored on your device. Tap a thumbnail in the gallery to attach a file to a comment, check-in answer, Campfire, or Ping.
With the Sketch tool you can draw on and annotate images. This is particularly handy if you need to add notes to a screenshot. You can even give the file a more descriptive name before uploading the drawing to Basecamp.
The Sketch tool can also be used to create a standalone drawing. Draw a diagram using up to 4 colors. Make a mistake? No worries, you can undo multiple times. A copy of your sketch is also saved in your device’s photo gallery.
Camera and Video Tools
You can now directly access your device’s built-in camera from the app. Capture your surroundings with the Camera tool. Or record an update for your team with the Video tool.
The Browse tool integrates with your device’s file browser. You can access PDFs from Dropbox, spreadsheets from Google Drive, photos from Google Photos, etc. Your preferred cloud storage service will be at your fingertips.
Look back at a discussion
Now you can look back at the discussion as you’re adding a comment. Start writing—flip back to reference the original Message—then continue writing.
See an overview of your upcoming events in My Schedule. This lists all the events you’re involved in across all Projects and Teams in Basecamp.
Invite your team with a text
Get people working with you in Basecamp by sharing an invite via Messenger, WhatsApp, Email, etc.
Post to a Ping
Send files, YouTube videos, Tweets, websites and more directly to your Ping conversations.
Improved media file handling.
Inline PDF viewer
Tired of downloading PDFs then searching for them in your Downloads folder just to read them? Now you can open and read your PDFs directly inside of Basecamp. Pan, zoom, and swipe through multi-page documents.
Note: password-protected PDFs must be downloaded to preserve security.
New audio file support
Previously our Media player only supported videos. You had to download audio files to your device to listen to them. Now you can listen to audio files such as MP3s, AIFs, and WAVs directly in the Media player.
GIFs in Campfires and Pings
Hooray! We added GIF browsing and searching to Campfires and Pings! A favorite feature of ours: perfect for those times when a reaction GIF is needed.
Additionally you can now change your profile picture and company logo (admins only) in the app.
Updated for Android O.
Support for Android 8.0 Oreo is complete with under the hood optimizations, a new adaptive icon, and finer control over Basecamp notifications. Turn off specific notifications, and set custom sounds for others. Lucky to have Android O on your device? Long-press the app icon to access the Quick Add menu. This new notification control is in App Settings (the “i” icon).
No Basecamp? No worries.
Create a new Basecamp account right from the login screen
Sign up for a 30-day free trial right after you install the app. Setting up a new company account on Android also gives your team access to Basecamp on the web, iOS, as well as on Mac and Windows computers.
Kotlin has a bunch of amazing features, and certain ones tend to grab the headlines — things like extension functions, higher order functions, and null safety among them. And rightfully so — those are all incredibly powerful, fundamental features of the language upon which everything else builds on.
And while I love those features, there are a handful of small things you don’t hear much about that I really appreciate on a day-to-day basis.
These are simple, small niceties — the little things you do hundreds of times a day but nothing you’d consider “advanced”. They’re common sense language features that, when compared to Java, end up saving you a bunch of cognitive overhead, keystrokes, and time.
Take this simple, albeit highly contrived,example:
At first glance the Kotlin version may look similar, as the differences are subtle. But there’s some great stuff to unpack that’ll make your life much better in the long run.
Given that example, let’s take a look at five things from Java that you’ll never need to do in Kotlin.
(Note: For clarity in the code snippets, Java is always shown first and Kotlin second. Contextual code is truncated and the diffs are bolded.)
1. Declare variable types
Instead of explicitly declaring a variable type (in this case a View) Kotlin simply infers it from whatever is assigned to it. You just write val or var, assign it, and get on with your day. One less thing to think about.
Kotlin provides accessors for existing Java getters and setters so that they can be used just like properties. The resulting conciseness (fewer parenthesis and get / set prefixes) improves readability considerably.
(Occasionally the Kotlin compiler can’t reconcile the getters/setters for a class and this won’t work, but that’s relatively rare.)
4. Call painfully long boilerplate methods
Kotlin provides you with concise convenience methods that wrap many painfully long Java calls. println is the most basic (though admittedly not the most practical) example, but Kotlin’s standard library has a boatload of useful tools that cut down on Java’s inherent verbosity.
Look, I know these aren’t mind-blowing features. But these little things, in aggregate over many months and tens of thousands of lines of code, can make a big difference in your work. It really is one of those things you have to experience to appreciate.
Put all these little things together with Kotlin’s headline features and you’re in for a real treat. 🍩
If this article was helpful to you, please do hit the 💚 button below. Thanks!
We’re hard at work making the Basecamp 3 Android app better every day (in Kotlin, of course). Please check it out!
Writing code that’s concise, clear, and expressive makes me happy. Focusing on creative solutions to business problems, not boilerplate and ceremony, makes me happy. Feeling an intense motivation to learn, which was missing in the Java days, makes me happy.
And that’s super important. Because being happy isn’t just good for the soul. It’s great for your programming skills too.
Would you truly be happy working in this environment eight hours a day? This is especially important for choosing a programming language.
Happiness has a cascading effect. Happy programmers do the right thing. They write simple, readable code. They take clean, expressive, readable, elegant approaches. They have fun.
Imagine extrapolating that feeling over an extended period of time.
The more capable and friendly your language is, the happier you are. The happier you are, the better code choices you make. The better code choices you make, the better habits you build. And the better habits you build, the better programmer you become!
This is exactly what’s happened with Kotlin and me over the past year. And I’m a better programmer because of it.
We found programming bliss in the language Ruby and passed it on to other developers with our framework Rails. Both share a mission statement to optimize for humans and their happiness.
In summary, your team needs to work with tools they love. Choose the fuse that gets people excited. You’ll generate excitement and motivation and a better product as a result.
This is absolutely true for Kotlin— it fits my brain and optimizes for my happiness. Working with it is just flat out fun, exciting, and motivating. It makes the quality of my work better and it makes me better.
I’ve never been a happier (or better) programmer. 😍
If this article was helpful to you, please do hit the 💚 button below. Thanks!
And if you’ve caught the Kotlin bug, you might like our other posts: