Highrise Mobile 3.1 now on iOS AND Android

Just a couple months ago, we announced iOS 3.0 and today we’re thrilled to announce BOTH a 3.1 version for iOS and Android.

For iOS users, since we just released iOS 3.0, this iteration has a lot of tweaks and fixes so you’ll see fewer crashes and bugs.

For our Android users, you’ll get all of the iOS 3.0 updates like the ability to search leads and contacts by tags.

And a lot more Task features brought into the app.

And more… like support for predefined values on custom fields, incorrectly formatted international phone numbers, copying fields from a contact, and emojis in notes, emails and comments.

A recent iOS review:

4* We’re a small sales organization with tons of complex interaction with our customers. We depend heavily and love Highrise on our desktops and laptops. I’ve been a beta tester for the upgrade iOS app for a few months and have been happy to see everything they’ve added and improved in this latest version….chuckamos

But what we’re really excited about is that from here on out we’ll continue to release BOTH iOS AND Android updates AT THE SAME TIME (read here for more technical details on how that’s possible).

And in case you haven’t been paying attention, our mobile updates have been much more frequent this year. We’re working on another big one coming soon…hint:

And if you love it, please give us a review. If not, let us know what we can improve: support@highrisehq.com.

Hybrid development is how we give our teams of three superpowers

We just launched a major revamp of the schedule in Basecamp 3. New calendar grid, new day drill-down, new navigation across months. It’s a big change, and we rolled it out simultaneously across five platforms: Web, Windows Desktop, OS X Desktop, iOS, and Android.

Three people did the work in less than six weeks.

Not because they worked 120 hour weeks. Not because they’re polymath geniuses. Not because they outsourced the work to offshore programming farms.

Three people launched a major new feature across five platforms in six weeks because of their hybrid-development superpowers. Powers derived from using basic web technologies, Rails, Turbolinks, and the Majestic Monolith.

These six weeks included all sorts of experimentation, back-and-forth, and trade-offs. It was both research and development. A flexible, fluid spec that we honed as we went along.

Can you even imagine trying to do coordinate five different native teams covering all those platforms simultaneously? Or how many people it would take? Or how long the schedule would be?

This industry often speaks of the 10x developer, and not a lot about the 10x environment. I think the latter is much more reproducible. And in fact, most people who appear to be 10x developers were simply lucky enough to be working in a 10x environment.

Hell, one of the three people on this scheduling team was even our awesome intern, David Newell. And we just had one main designer on the crew as well. So that’s one intern programmer, one senior programmer, and one senior designer delivering this major upgrade in six weeks.

We don’t have any proprietary magic at Basecamp. We’re literally giving all these superpowers away for free. Turbolinks is open source. Rails is open source. The Majestic Monolith and Hybrid Development patterns are well publicized. It’s all right there for anyone who wants to be this productive.

And sure, you probably could eek out the last few percent of interface fidelity if you went all native everywhere on a feature like this. But the price of going from 95% Good Enough to 100% Verified Native is orders of magnitude. Some times those orders are worth it, but the vast majority of the time, they’re not.

Basecamp 3 currently carries a 4.5/5 rating in both the iOS App Store and the Google Play store. Both are hybrid apps powered by Turbolinks and backed by that Majestic Monolith of a Rails app. The results speak for themselves.

Going with hybrid development has been absolutely key to how Basecamp gets to stay small and still deliver an ace experience across all the major platforms. And you can do it too, if you dare to reject the dogma of All Native, Microservices, and the dark side of heavy client-side JavaScript MVCs.

Highrise for Android is here…

Highrise has had an iOS app, going on now for 7 years. However, the development on that mobile app has been slow. In June of 2015, we released version 2.0 and we’re still on that version today. We’ll update it soon, but I have to admit we’ve been saying that for awhile.

Regardless, at least, iPhone users, you had an app. Android users had nothing.

As soon as we got the iOS app update out, creating a brand new Android app kept popping up on our list of priorities. But our team didn’t have the skillset of making Android apps, so the search for building that part of our team, even trying to use contractors, became laborious and soon other priorities pulled us away.

Finally, we committed to figuring out how we could ramp up the knowledge internally we needed to get this task done, and we uncovered something pretty unusual but very powerful for us to build our mobile apps from: a Microsoft product, Xamarin. We’ll have a lot more on that soon…

But today, our work leads us to an incredibly important announcement.

Today we announce our new Android App

View the latest activity in your account, find contacts or add new ones, and keep up with your tasks, all on the go with your Highrise Android App!

We’ve had hundreds of beta testers and have received great feedback so far:

“thank you, thank you, thank you for the Android release. I have been on the private beta, and just updated my version to the newest (allowing notes and edits). It has been a very, very welcome relief to how I do business to have this mobile access. The app hasn’t crashed on me and is shaping up to be a stable, easy to use platform!” -Eric

“@highrise Android release is awesome, been waiting for this for years!” –Robert Jan de Boer

And for those of you who use iOS, we promise, additional updates are coming soon! We think the tools we have in our hands will now allow us to do near simultaneous updates to iOS and Android and help keep our Apps updated much more frequently. In the meantime, if you don’t have the current iPhone app, get it here:

It’s a lifesaver when you’re not near your computer or if you’re always on the go! We hope you find it as handy as we have. It’s still the first thing I check in the morning 🙂

P.S. If you find yourself overwhelmed while starting your own small business, handling customer support or staying in touch with all your Android contacts 🙂 check out how Highrise can help!

You can also follow more behind the scenes on how we design products, run the business, and manage a family 🙂 at a YouTube channel I created: here.

Program to where the performance puck is going to be, not where it has been

In the year of our lord, 2013, the thought of ARM-powered phones running the full web experience with JavaScript as fast as x86-powered desktops was a laughable pipe dream. Way back in those olden days, some three years ago, the iPhone 5 was off by about a factor of 10. It seemed impossible that this would change any time soon.

But it did. The new iPhone 7 runs JavaScript, as measured by the JetStream benchmark, FASTER than the fastest of the (non-pro/air) MacBooks you can buy today. The best 5K iMac with a 4Ghz i7 processor is now less than twice as fast as the iPhone 7 on the same test. The ARM CPUs are improving at an absolutely insane pace. Moore might have taken a seat with desktop CPUs, but he’s sprinting faster than ever on mobile.

The pace of progress have embarrassed many predictions of the future, but this specific example is still astounding. Three years ago is not that long!! In that time we went from “off by an order of magnitude” to “faster than most laptops”.

What’s even more important than the benchmarks, though, is how the consequences of this incredible leap of performance alters not only what’s possible on a phone, but what the common strategy should be.

Here’s a money quote from 2013:

Just to be clear: is possible to do real-time collaboration on on a mobile device. It just isn’t possible to do it in JavaScript. The performance gap between native and web apps is comparable to the performance gap between FireFox and IE8, which is too large a gap for serious work.

That gap is gone. So I suppose that means the iPhone 7 is now officially certified for Serious Work™ 😜.

Here’s what funny. In 2013, we built an iPhone app for our collaboration tool Basecamp using JavaScript and the web in a hybrid combo. We do have a lot of fun at work, but I’d like to think that the result were Pretty Serious none the less.

Using the mobile web as the core of our native apps was a gamble at that time. The institutional scar from Facebook abandoning HTML5 for pure native in 2012 was still fresh in the memory of most working at the intersection of the web and native. And to be fair, there were indeed some tradeoffs. Things clearly weren’t as fast as native, they were just fast enough.

That was an order of magnitude in performance ago! Now the performance of this strategy is not just fast enough to be passable, it’s more than plenty fast enough to be awesome. Or rather, a non-issue.

Granted, the performance of the iPhone 7 is a future that’s not yet widely distributed. Android in particular has a lot of catching up to do, but even at much less performance, they too are clearly within the habitable zone of performance. That place where other things just matter far more.

Now I’m not saying going hybrid carries no tradeoffs. There are still some interactions that occasionally feel less than native, and thus still lack that last tiny bit of polish. And there are clearly still applications, like high-end 3D games, that need every ounce of performance they can get. But with the performance afforded us today, the spectrum of applications that can be knock-it-out-of-the-park awesome using a hybrid web/native combination is very large indeed. And much, much larger than it was in 2013 when we forged ahead.

The productivity advantages of developing a multi-platform service using the hybrid approach are simply astounding. There’s simply no way we could have built Basecamp 3 in 18 months to cover the web for desktops, web for mobile, native iOS, native Android, and email without a hybrid and majestic monolith. Not without ballooning our development teams dramatically, anyway. That’s five platforms covering some 200+ separate screens of functionality.

This feels similar in many ways to the situation I outlined in Ruby has been fast enough for 13 years. When performance improves, it’s not just that the things we already do get faster. It’s that we can do new things, in new ways. Ways that would have seemed impossibly slow before. Ways that make people who had to do the hard work of fitting a full computer demo into 4Kb cry, but that none the less lifts the productivity of the masses.

It also reminds me of an anecdote from John Carmack, the legendary programmer of Doom and Quake. He talked about how when he was working on a new game, he had to program not for the performance of today, but for the performance of three years in the future, when his game would be finished. If he programmed for today, it would look dated when it launched. Doom and Quake always looked amazing because of this.

Think of that when starting a new app today. Are you programming for the state of the world as it looked in 2013? Or 2016? Or 2018? Program to where the performance puck is going to be, not where it’s been.

If you want to checkout how a hybrid app can feel, Basecamp 3 has some great examples in the iOS app and Android app. Both are sitting pretty with a 4.5/5.0 rating from hundreds and hundreds of ratings.

My favorite people and resources to learn Android programming from

Keep your skills razor sharp by following these fantastic people and resources in the Android community

One of the best ways to learn Android programming is to surround yourself with people better than you — then watch and listen intently.

So here’s my attempt to help you find the best to learn from. Below is a list of some of my favorite people and resources in the Android community to help in your quest for excellence.

A big thanks to all these people and groups for making us all better Android programmers! 🤘

🐦🌟 Twitter

I’ve really enjoyed following these Android community members on Twitter.

These folks aren’t just knowledgeable teachers and key open-source contributors. They’re also positive-minded, hopeful, and friendly. Those qualities are just as important to me as being an expert in the area.

Chiu-Ki Chan — A devoted learner and teacher, Chiu-Ki does it all. She interviews folks, runs 360|AnDev, teaches on Caster, speaks, draws, writes, and probably does 100 other things I don’t know about. 😉

Donn Felker— Not only an Android GDE, Donn’s got a great blog full of helpful posts. He’s also half of the Fragmented Podcast along with Kaushik Gopal (who’s pretty sharp in his own right). And if that weren’t enough, Donn’s also the head honcho at Caster.io, a fantastic site for video tutorials.

Jake Wharton— Honestly, if you don’t know who Jake is, you might be in the wrong place. Just go here now. 😆

Kristin MarsicanoAn instructor at Big Nerd Ranch, Kristin has a wonderful down-to-earth vibe and is clearly a great teacher. Her recent talk at 360|AnDev on the activity lifecycle is a great refresher for something you probably don’t think about enough.

Ryan Harter— Ryan’s a GDE who’s been teaching a lot lately about how to reduce boilerplate code. He also helps run GDG Chicago West and is an instructor at Caster.

The Practical Dev —OK, this isn’t technically Android specific. But it’s such an informative and entertaining commentary on programming, I had to include it. Sometimes reading general programming posts can be really enlightening (and hilarious).

(Note: It’d be impossible to write about every single person who’s a great Android teacher, but you can find more on this extended Twitter list that I’ll keep adding to.)

📻 Podcasts

You should listen to Fragmented!
  • Fragmented— Produced by the aforementioned Donn and Kaushik, this is probably my favorite podcast. Two independent developers with their unique personalities and perspectives, with a focus on purely technical talk for Android.
  • Android Developers Backstage — The most official Android podcast you can get your ears on. Straight from the people who…well, created Android.
  • Material— Material isn’t a technical podcast, but is a lighter listen and a great way to get your Google news. Great for a Friday afternoon. Voices include Russell Ivanovic (from ShiftJelly, creators of Pocket Casts), Yasmine Evjen, and Andy Ihnatko.

📺 Videos

An example of Realm’s super cool synced video and presentation.
  • Caster.io — Another Donn Felker production, Caster has a over 100 lessons (and growing) of stuff you should know. If you ever watched a video from RailsCasts back in the day, it’s got a similar vibe.
  • Realm.io — I’m admittedly a little confused by Realm. They have a cool database product, but on the side they also host fantastic talks — transcribed with video and slides that are synced up beautifully.
  • Android Dialogs (YouTube) — A fun little video series where the aforementioned Chiu-Ki Chan and Huyen Tue Dao interview a bunch of folks in the Android community.

📰 Newsletters

Android weekly — the best in Android all in one place.

📚 General Reading

🗣 Conferences

To be totally honest, conferences are tough for me. No fault of the conferences — I’m just terrible at striking up conversations with new people! 😶

Of course they do have a ton of value — meeting new people and learning directly from the community is an irreplaceable experience.

Jay Ohms, Russell Ivanovic, Kaushik Gopal, and me @ Google I/O 2016. 😁

Google IO is the only Android-specific conference I’ve been to, so I don’t have much to compare to. The sessions were top notch (logistical issues notwithstanding), and just about everyone you’d want to meet is there. The downside is that it’s so large, it can be hard to get into the sessions you want or meet up with new people you don’t already know.

There are two conferences I’ve never been to but have my eye on: the intimate 360|AnDev Conference (hopefully it’s back next year) and the more established Droid Con NYC (maybe next year I’ll remember to actually get a ticket).

Whether you’re just starting out or are a wily vet of the Android programming world, I hope this article was helpful to you! If so, please do hit the 💚 button below.

And if you have any Android favorites of your own, please share in the comments or on Twitter — I’d love to find even more great people and resources!

Along with learning daily, we’ve been working really hard to make the all-new Basecamp 3 and its Android app as great as they can be. Check ’em out!

Improve your App by Connecting the Dots.

Improve instead of redoing

The Basecamp 3 app for Android is designed and maintained by a team of three people: Dan Kim, Jay Ohms, and me. We keep pace with the rest of the company because it’s a hybrid app—native code plus mobile web views. New Basecamp features usually work in the Android app without us having to re-do the same feature in native code.

This hybrid architecture allows us to focus on Android specific improvements. Recently that’s meant giving customers a way to add stuff like to-dos and share links faster than they can in the web browser or through the desktop app. Here’s how we approach improving the Basecamp 3 Android app.

Lay the foundation

A few months ago Jay Ohms and I designed a way for customers to quickly add to-dos, messages, events, and file attachments right from the app home screen. We call this feature Quick Add.

On the surface, implementing the feature looks pretty easy. You might be thinking “All you did there was add the Floating Action Button thing that other Android apps have!”

However, you’ll quickly realize that the customer needs a way to pick the correct Basecamp. We don’t have any information about where this new to-do is going. This interaction is also happening on a small screen. When a customer has many Basecamps the app needs to provide a way to make it fast and easy to pick the right one.

Jay and I made a Basecamp picker screen, and added a list of your recent Basecamps. These recent Basecamps are based on ones you’ve recently chosen through the Quick Add interface. We also made a screen that allows you to select the To-do list and make the to-do. Here’s what that looks like:

We approached this project in the way we always do: by building the necessary screens to get the feature working. We didn’t realize it then, but we were laying down the foundation for different feature that would further improve the Android app.

Bridge the gaps

Shortly after launching the Quick Add feature, Dan Kim started looking into customer usage patterns. He noticed that the My Assignments screen was one of the top destinations from the home screen. This was odd since My Assignments was only accessible from tapping your profile picture on the home screen.

It seemed that customers wanted quick access to their to-dos, and we weren’t making it easy by burying it. It sounds obvious in hindsight. Of course you want to see your to-dos as quickly as possible. Your mobile phone is your most personal device.

Dan pushed to get My Assignments onto the home screen. Now customers can quickly see what to-dos need to get done when opening the app.

Use the foundation

It’s nice that we added My Assignments to the home screen. However, the My Assignments screen is read-only. That means you can’t add new to-dos from that screen. You can only see to-dos that have been assigned to you.

I mentioned earlier that we’re able to get a lot done with a small team because of the hybrid architecture and the web views. However, the interaction design for web views is sometimes optimized for desktop browser use. We might want to design a special interaction for the mobile app, but we can’t with the web view we get from the Basecamp 3 core team.

If there isn’t a way to add to-dos on the My Assignments screen from the browser then there isn’t a way to add to-dos from mobile.

A few weeks prior, Jay and I made the Quick Add feature. We used this foundation to provide the ability to add to-dos straight from the My Assignments screen. This was a big improvement. Now the screen wasn’t just a launching pad to your tasks. You could also fill in the blanks by adding tasks yourself.

Build on the foundation

Usually we’d call this done and launch it. There was one problem. When you make a to-do from Quick Add it doesn’t have an assignee. When we initially designed Quick Add we optimized for “quick.” That meant that we didn’t allow room for assigning the to-do to someone.

Once we added this feature on the My Assignments screen a missing piece was apparent. Why couldn’t you assign the to-do to yourself? Maybe it could be a checkbox. We could even have it pre-selected to “Assign to me” when you’re looking at the My Assignments screen.

We did just that. We added a checkbox to assign the to-do to yourself. When you make a new to-do it will automatically appear on your open to-do lists. We also improved the Quick Add foundation by adding the “Assign to me” checkbox when you create a new to-do from the home screen.

In the future you’ll be able to assign to-dos to people that are part of your Basecamp too. We just haven’t built that part out yet.

Full circle

We didn’t plan on designing the Quick Add feature as a portable element. Our original intention was to have it isolated on the Android home screen. When Dan added a link to My Assignments from the home screen it became obvious to apply the Quick Add framework there. It wasn’t until we started using the feature on the My Assignments screen that we saw the need for an “Assign to me” checkbox.

There’s a personal to-do list in the Android app—exclusively on Android—because we connected the dots from Quick Add on the home screen to Quick Add on My Assignments. Now you can add new to-dos, add comments to to-dos, and even complete the to-do right from that screen.

By connecting the dots from one feature to the next we’ve improved the app for our Android customers. We didn’t have a grand plan. Rather we kept pushing the interface along, extending the foundations, and making small changes with big benefits.

Thanks for taking the time to read my article. My name is Jamie, and I’m a Designer on the Basecamp 3 Android team. If you’re a Basecamp customer you should get Basecamp 3 from Google Play. If you’re not a Basecamp customer… what are you waiting for? Get a free Basecamp today.