The Making Of Reports
Chances are you don’t know Kyle Robinson Young, but you love the reports he just built (or you are about to love them! Have you heard we just launched Reports?!)
Kyle is a perfect example of the YNAB culture. He’s an absolute pro at what he does, passionate about his craft, and he maintains an abundance of interesting pursuits outside of YNAB. He is our resident expert on slack-lining, drones, and Portland, OR, where he lives with his wife, and two little boys, Isaac and Oliver.
Here’s a little bit more about Kyle and some behind-the-scenes intel on the “Making of Reports”:
Did you always know you needed a budget, Kyle?
Well, my wife, Crystal, and I, never had a lot of money growing up. So, our plan was simple: don’t spend money. We didn’t think we needed a budget, because, you know, our plan of not spending money.
It worked until our car broke down or a family member needed something. But even little things like renting a movie or any spending that didn’t fall into our “Survival” category was stressful. Even when we had the money, spending made us feel guilty and caused a lot of tension between us. Although I didn’t even realize how much we were affected by it until after we started using YNAB.
Now, when it’s time to make a purchase, the money is just waiting in the proper category. The money is just doing its job, so it is absolutely guilt and stress-free.
Speaking of stress-free, Kyle, you know you are kind of legendary among the YNAB team for having “The Most Epic Age Of Money. Ever.”
Well, yes. Partially, because when we were building the Age of Money feature, I was using it long before anyone else. Also, again with the not spending money!
So, lay it on us! What is your Age of Money right now?
Crazy. Also crazy, is that you are largely self-taught?
I was lucky to attend a small, alternative high school. We had computers at every desk, but it was 1998, so we’re talking those giant CRT monitors and towers. Knowing how to write code at our school meant you could prank your friends by breaking into their account and replacing their desktop with a screenshot. Or creating an email attachment loaded with a macro that would send the same email from them to everyone else in the school; eventually, until the entire school network crashed. Needless to say, I was very motivated to learn.
I mostly taught myself to code by reading, listening and watching small little pieces of information around the net. I have a hard time finishing an hour long video on a subject but can easily binge watch six twenty minute videos on the same subject for some reason.
I wanted to contribute back the knowledge I’ve gained through the same way, so I started a YouTube channel which has short and focused code tutorials. They’re super fun to make and it forces me to dive into details of a topic much deeper than I would normally.
So cool! How do you find the time!?
I love writing code. I love being able to create something interesting from absolutely nothing. Most evenings after I finish work, dinner, and the kids, I read a ton of books, I’ll jump back onto my computer and work on various open source projects. All the code I write is built on or with another open source project. So I like to give back to the community as much as possible. I’ve met so many fascinating people through contributing to open source, too.
What’s the biggest problem you’ve had to solve at YNAB?
The Register was and still is the biggest problem I’ve had to solve at YNAB. We started with an early version of Ember, before 1.0. It wasn’t very great at rendering large lists of transactions. There were many other solutions we tried but all were pretty limited or slow.
My goal was to display a register with an unreasonable number of transactions—two million to be exact—without any loading messages.
First, we calculated how many rows we could show, added some scroll buffer rows above and below that and then only rendered that slice of rows. We have a hidden top row that pushes the view slice up and down and another hidden row that shrinks and grows so we can use the native browser scrollbar.
With this solution, the total amount of rows is no longer important. It will scroll through as many transactions as your browser has memory to load. The important part is getting the render time of each view slice as low as possible. Currently, we’re doing a lot of work across the entire app (the kind of work that probably won’t make it into the release notes!) But the refactoring will greatly help us squeeze even more performance out of the app and specifically, the Register.
Fascinating, and also I barely understand what you’re talking about—so let’s transition to reports! You are the lucky guy to lead out on reports—do you have a favorite?
Probably Spending Totals and Trends.
With Spending Totals, I can compare my fun money donut slice with Crystal’s fun money donut slice. Unless, of course, mine is bigger, then there’s no need for us to dwell on that report.
And with Spending Trends, I can really evaluate how out of hand my coffee habit is becoming. With time, if I’m not smiling about a downward jagged line, I’ll probably consider recategorizing those transactions as “Groceries” again.
Good, helpful info for budgeting and life!
Reports were a long journey. Any deep thoughts looking back on the whole process?
Ha! YNAB has a very rigorous review process. And not surprisingly, the team is full of budget nerds so when you open a feature to the team for feedback, the last thing you hear is crickets!
Features get feedback from the Customer Support team on the important things people write in about most. The Education team gives feedback related to the most common questions people ask while in class. Marketing weighs in on what they hear YNABers say. Besides code reviews, the other developers have been intimately using YNAB for a long time and provide a lot of great initial user feedback.
Not to mention, “Change Your Mind,” is part of the YNAB Cultural Manifesto. So it’s not uncommon while developing parts of a feature, to take a step back and really think, “Will this actually help people budget better?” And sometimes that changes things. It might take a little longer, but we think it’s a big part of why our product is so amazing.
I do love YNAB. And I know you do, too.
For sure. Recently we had a product meetup, where all the developers worked together for a few days in person. We brainstormed some challenging, big ideas for the future. I love that even though YNAB is a small company, Jesse isn’t afraid to let us take on those big challenges and always be improving our app.
Next year will be a great year and I think the work we are doing now will lead to even more budgeting success stories. I absolutely love hearing YNAB success stories. If code I wrote has improved anyone’s life in any way, I feel enormously proud.
What’s next for reports? Anything you are allowed to share?
I’m excited to get feedback from everyone about which parts of the Reports are useful and which parts are not. We plan to continue making improvements as we process feedback and live with them longer.
I’d love to build (and have for myself!) an Age Of Money Report. I think it would be so helpful to understand the cause and effect of changes in your budget and how it impacts your Age of Money over time.
Thanks so much, Kyle! For sharing, and of course, for Reports!