What to Build or Fix in 2017
I wrote this text at the end of 2016 to document my thoughts and motivation for possible projects in 2017. Although I initially planned to publish it and start a new blog with it, I never did. However, the thoughts here are still as relevant to me as they have been back then, and in fact I made some progress on a few items. I hope to spend most of my time at the Recurse Center dedicated to something that is aligned with this bigger picture.
2017 is going to be an important year. Putting aside for a moment the political, social, and cultural catastrophes that 2016 left for us to deal with, I need to figure out what I want to do when I'm done traveling. Professionally. Like in getting a real job again.
I'm not exactly sure what's going to happen. At this point pretty much anything is possible. Maybe I join an organization that works on something I'm interested in? Maybe I found a company with somebody who is passionate about the same things? Maybe I finally manage to focus on one idea long enough to actually ship something? Oh my…, I don't even know which country I'm going to live in next year.
All I know today is that there are too many interesting problems to work on, there's not enough time to work on all of them, and I'm having a hard time figuring out which one to focus on. So I thought a good first step is to write them down. And because one of my resolutions for 2017 is to be more open about what I work on and think about, why not putting them right here on the Internet?
Make Premium Business Models Viable on Mobile
aka "Fix the App Store(s)"
Premium business models for mobile are broken. Especially smaller development teams struggle to create and sustain their business. But they are where innovation comes from. Developers should be able to make a living from selling high-quality apps for a reasonable price as a product. They shouldn't be required to provide their app as a service, if they don't want to. There is still value in the product model for software, even though nobody ships software in little boxes anymore. There are many customers who want to pay for quality apps and games. And there are many developers who want to provide them. The questions are: How do we connect these groups with each other? And how can we educate customers about why software is worth more than a grande triple-shot caramel macchiato? The current incarnation of app stores doesn't provide a satisfying answer, because they're trying to cater to everyone.
Invent Better Touch Screen Controls
aka "Fix Mario Run"
Many games struggle with finding the right control mechanism for touch screen devices. They choose inferior solutions like virtual on-screen controls. Or they oversimplify controls to a single button. Instead of trying to improve this, we've already moved on to figure out how to interact in AR/VR space, where there's not even a piece of glass to touch anymore. Fun interaction models for complex directional input on touch screens are possible. Many games specifically designed for touch screens demonstrate this. And a simple gesture we use everywhere like scrolling with inertia is a great example: it doesn't rely on haptic feedback from a physical button, and yet provides instant feedback with physical feel. Yet I haven't seen a platform game that doesn't use a virtual d-pad, allows controlling a character with more than just one button, and still feels native to a touch screen.
Negotiate a Peace Treaty in the War for Attention
aka "Fix information overload"
Fake news. Social bubbles. Broken filters. Information overload. We should be able to share stories and information with our friends easily. However, we also need awareness that attention is a scarce resource. We can share everything with the touch of a button, but nothing helps us manage our limited attention spans. We've spent so much time trying to fix this on the receiver's end, hoping for magical (and opaque) algorithms to fix this for us. Maybe we should try something different? If we want to encourage quality, we need to limit ourselves (artificially) in quantity. We need to reduce our intellectual emissions and stop polluting our friends' timelines. Instead of quickly posting a mediocre joke for everyone to read, we need our tools to encourage us to edit more and only share what's really important to us.
Build a Pure Social Network
aka "Fix Facebook"
Social networks need to be free, so everyone can participate. Today's successful social networks are all free for us to use. They still need to pay for operations and further development. So they turn to business models based on advertising, and collect and sell information about us. The ideal social network should not rely on revenue models which compromise privacy. It should provide infrastructure, but not influence its users on how and what they share. A pure social network should (a) be free and accessible to everyone, (b) run on shared resources with a non-profit business model, (c) leave it's users in full control over what they want to share, and (d) stay neutral and use transparent algorithms so we can understand how it works if we want to. We know how to do all these things. Now we need to combine them. The biggest challenge is not to build it, but to make people see the value in these things and move over.
Make Developing Software Accessible to Everyone
aka "Fix software development"
A lot has changed in software development over the last fifty years, but we still struggle with the same complexities. Our tools got so much better, but our apps still crash, bugs are still hard to find, and codebases still hard to maintain. We invented countless programming languages, but we're still typing letters on keyboards chaining little symbols into complex hierarchies using text editors. Today, regular people can become authors, photographers, movie directors, or music producers. We created tools that lowered the barrier of entry for everyone. If we can do it for them, we can do it for us. However, to do so, we need to fundamentally re-think the way we produce software. We need to challenge core assumptions to make programming easier, faster, and more accessible. Some tools we invented are more effective than others. What are these tools? How can we measure how effective they are? What can we learn from them to create even better tools? How can we write less code? Do we have to write code at all?
Simplify Data Visualization and Analysis
aka "Fix that everybody thinks math|statistics|science is hard"
The world we live in is complex. When we communicate with each other, we abstract away many of the world's complexities, just to make a point. But it's so easy to take this too far. Especially the media tends to oversimplify. Complex issues are turned into simple black-and-white stories, which everybody can understand, but which are almost never true. We need better tools to communicate and to navigate our complex reality. A promising approach is to leverage data, which we have about almost everything. We can visualize it in meaningful ways, and create models that we can play with to explore the problem space and gain understanding. Creating these visualizations and models is difficult and requires lots of knowledge and effort. But something so essential for us to communicate effectively with each other should be more accessible to everyone.
Play with Visual Art
aka "You can't fix everything, make some art instead"
When I write code to experiment with some programming-related concept, I often look for something simple enough to be finished quickly, but interesting enough to play with. Then I often turn to creating something visual, like algorithmically generated graphics created from simple math. It's very satisfying, because usually it doesn't take long to make something appear on screen. And then there's a ton of complexity to play with just by changing a few numbers. While most of the other items above are about reducing complexity, this one is somehow the opposite: create complexity from simple ingredients. Maybe there's some deeper meaning hidden here: Apparently, for me reducing complexity qualifies as professional work, while the opposite counts as a recreational activity…?
This is what I'm excited about and plan to work on in 2017. Sure, the world faces bigger challenges than what's on this list. These are just things I'm personally enthusiastic about, because I feel comfortable that I have the skills to contribute to their solutions.
There's tons of little ideas hidden in these challenges. For everything on this list, I do have specific ideas in mind, actionable items on a to do list, and in some cases even started working on a small prototype. I hope to write about some of these things here in more detail soon. Let me know which ones you want to read more about.
And if any of these problems sound interesting to you, let's connect! Do you know somebody working on something similar? Have you found a project on GitHub that looks related? Do you follow somebody on Twitter or read somebody's blog who talks about the same stuff all the time? Let me know.