How We Build
Seeking survivors: introduction to survival analysis
Analyzing time to an event can answer many questions about a population. Medicine, epidemiology, and actuarial science have historically analyzed lifespans. For example, actuaries use life tables to assess the probability of someone living to a certain age. Researchers may analyze the likelihood of a new treatment improving survival rates. One technique historically used by these fields […]
Sync failure handling
In the last article we discussed how we sync our changes with the server. Ideally, those HTTP requests would always work – if only we could walk the rosy path of best-case scenarios! Unfortunately, when it comes to network requests, all sorts of madness can occur. It’s best to bake madness-handling systems into your code instead of […]
Syncing changes
Going offline meant using our database for all immediate changes to the client. But obviously we later want to sync those changes with the server. The basic idea behind our sync is to store changes made offline as a series of deltas that are later uploaded to the server. In this post I’m going to […]
Airplane mode: enabling Trello mobile offline
Good news, everyone! The Trello mobile apps now work offline! Offline mode has been the most requested mobile feature for years. It’s frustrating to lose the ability to use Trello when you enter the subway or you’re flying on a plane. Even more importantly, using Trello in an area with poor cell coverage resulted in […]
How to deploy Java apps with Docker (a quick tutorial)
For those new to Docker, let me say “Welcome to the party!” It’s an easy way to deploy, run, and manage applications using vm-like containers that are independent of elements like hardware and language, which makes these containers highly portable. And it’s all the rage. So how do you deploy Java apps using Docker? You’re […]
Lessons from internationalizing Trello, part II: designing for translators
When coding i18n support in an iOS app, you need to know technical things like how to use Localizable.strings files and NSLocalizedString(). And when designing the UI, you need to understand right-to-left interfaces and remember that any element with text can vary in width considerably. But one thing I didn’t anticipate was how important the translation files were […]
Trello Android schema upgrades
For many years, Trello Android has used a simple system for upgrading the database schema: drop the entire database, recreate it, and repopulate the data from the server! While far from ideal, this solution worked because the Trello server was the only source of truth. Any change you made in the app was immediately transmitted […]
Inside Atlassian: how we use Jira Core for HR Project Management
The HR team at Atlassian was using excel and email to manage their projects. That is, until the bright-eyed Jira Core team approached ’em with a proposition: Implement Jira Core for them to manage their HR projects if they told us everything about the experience. Boom! We had ourselves a deal. And it was good one, because HR use cases typically involve onboarding and recruiting… but HR teams do so much more than that. Read on to learn about the results of the proposition, how the Atlassian HR team now uses Jira Core for HR project management to be more organized and in the know for all tasks, requests, and statuses.
Inside Atlassian: how we do marketing project management with Jira Core and Confluence
Marketing can be a cyclical process. We marketers typically plan projects, assign work, review content, publish, and then…. start all over again. At the beginning of each quarter, we approach this process with bright-eyed enthusiasm, big ideas, and a clear plan of attack. But as the months wear on, and more (or unexpected) work accumulates, it can […]
Inside Atlassian: tracking blog categories and performance with Jira custom fields
I can hold my own with math and numbers, but I don’t love them. I have to admit though, I’m starting to love data. Like many marketers, I spend a lot of time thinking about blogs. And blogging itself is becoming increasingly data-informed (if not fully data-driven, but that’s another story). How awesome is it that […]
Trellisheets: How we spin up CSS for Trello sites with ease
We’ve talked about our CSS a lot in the past. We did a State of the Trello CSS and published a guide for writing CSS. We’ve wrapped up everything we’ve learned into Trellisheets, a public repo for all things CSS at Trello. What’s in the project? Our core CSS files. We use these on multiple sites to give them […]
Git hooks for continuous integration
Git hooks are awesome in the context of continuous integration, so I want to share three CI-related use cases and point you to some ready-made hooks you can add to your workflow. If you’re new to Git hooks, no worries: we’ll start with the basics.
Inside Atlassian: how our HR team uses Jira Service Desk
The way we help each other inside of organizations is changing. With internal team collaboration so critical to success, how teams service and provide support to others in the organization is becoming a new way of approaching work. In our latest blog on this topic, we found that 50% of organizations have adopted or are […]
Like Trello, but on a watch
We, like all of you, watched with great anticipation in September as Apple announced their latest technological marvel. At the time we had no idea what this meant for our current iOS app. What kind of capabilities would WatchKit have and how could we integrate that into our existing codebase? Now that the first version of Trello […]
Lessons learned from our first Gradle plugin for Android, Victor
The Android team at Trello is happy to announce our first open source Android library, Victor! It’s a Gradle plugin that lets you use SVGs as resources in your Android apps. Victor started as a request from our designers. They were regularly creating vector icons that they would later convert to PNG for Android. Could we […]
