The AeroPress was conceived at Alan Adler’s dinner table. The company was having a team meal, when the wife of Aerobie’s sales manager posed a question: “What do you guys do when you just want one cup of coffee?”
A long-time coffee enthusiast and self-proclaimed “one cup kinda guy,” Adler had wondered this many times himself. He’d grown increasingly frustrated with his coffee maker, which yielded 6-8 cups per brew. In typical Adler fashion, he didn’t let the problem bother him long: he set out to invent a better way to brew single cup of coffee.
He started by experimenting with pre-existing brewing methods. Automatic drip makers were the most popular way to make coffee, but “coffee connoisseurs” seemed to prefer the pour-over method – either using a Melitta cone (or other variety), or French Press. Adler quickly found the faults in these devices.
The Melitta cone, a device you place over your cup with a filter and pour water into, has “an average wet time of about 4-5 minutes,” according to Adler. The longer the wet time, the more acidity and bitterness leech out of the grounds into the cup. Adler figured this time could be dramatically reduced, quelling bad-tasting byproducts.
It struck Adler that he could use air pressure to shorten this process. After a few weeks in his garage, he’d already created a prototype: a plastic tube that used plunger-like action to compress the flavors quickly out of the grounds. He brewed his first cup with the invention, and knew he’d made something special. Immediately, he called his business manager Alex Tennant.
Tennant tasted the brew, and stepped back. “Alan,” he said, “I can sell a ton of these.”
Alan Adler's AeroPress
What I wish I knew when I started building my first app
I want to write this post while the feeling of being clueless of Cocoa programming is still fresh in memory. Like any other creative endevour, starting out is the difficult part, but if I were to start out today here are some of the things I would want to know:
Start with a real, but simple problem
- Playing with sample code without trying to implement something new, might teach you a couple of lessons, but if you want to learn to code you need to have a specific goal.
- If you do not know what problem to solve, look at your everyday tasks and find the ones that are repetitive and can be broken down into steps.
- Scratching your own itch is going to give you more creative freedom as you understand the product and are better able to test your code.
- Start with the simplest idea you can come up with: an aeropress timer or a nursing clock are both good ideas, but also taken. The smaller the problem, the better. Expanding is easy, simplifying is hard.
- Build on the work of others, but do not solve a problem that others have already solved better than you ever can.
GitHub, GitHub, GitHub:
- GitHub can easily be integrated with Xcode for versioning. Versioning is essential for deleting code with a good consciousness and deleting code is essential for getting better.
- GitHub Issues is great for collaborating, creating todo-lists (making deadlines) and planning features for future versions of your app.
- GitHub pages are great for hosting your app’s website using Jekyll.
- GitHub wikis are great for maintaining documentation for your app or just yourself.
- There are loads of great Cocoa code on GitHub.
- If you are a student, you get 5 private repositories for free.
StackOverflow > books:
- There are many great books on programming, but they were not what I needed to get started.
- To get into Cocoa, I had to find my problem, break it into smaller problems and look for solutions to each.
- StackOverflow contain solutions with example code to loads of specific problem. Many of the solutions are good, some are outdated and some just bad, but they can all be what you need to figure out your own solution.
- StackOverflow is great for getting a grip of the diversity of solutions different people come up with to the same problem.
- Reading books when you are beginning to grasp the scope of your problems, might be a good idea.
Find your heritage!
- Whenever you inherit code from Apple, look up method definitions (cmd-click on method-names in Xcode), not only will it tell you the intent of the developer, it will likely point you towards other useful methods.
- Use Dash for searching through documentation.
- If you are implementing something you think should be a part of the Cocoa library, it probably is, but you might have been looking in the wrong place.
Think through your solutions, before you implement them
- When you are starting to get the hang of Objective-C, try to visualize your solutions before implementing them.
- Limiting the number of paths through your program, will make your solutions more robust and easier to implement.
- Test your code and handle exceptions well. This is more important than any feature you add. I ended up deleting loads of code because I was too focused on adding features, when in reality my app was becoming less and less usable.
If you can't beat them, tempt them over to your side..
Speaking of Teslas popularity in Norway (translated from Stavanger Aftenblad, a Norwegian newspaper):
In March alone, 250 people in Rogaland will receive their Teslas. If we add that to the almost 450 Teslas already sold last fall, there are now over 700 Teslas on the road in Rogaland.
This means, that Rogaland now have a higher number of Teslas per capita than California or any other place in the world, said Andreas Nysted, sales director for Tesla Rogaland, on an event held by Grønn By in Stavanger Wednesday.
Rogaland is a region in Norway famous for oil and gas industry. Stavanger, the biggest city in the region, has traditionally expressed its wealth through expensive cars. Seeing the popularity of the Tesla Model S explode like this will drive adoption of electric vehicles like nothing else. If employees of oil and gas companys are the ones to move us away from fossile fules, that would just make the story better!
Steve Wozniak's plan for Norway
Transcribed from an interview on a Norwegian video podcast 5 years ago:
People ask: what can we ever do to move towards the future? We have this great wealth and resources, oil, and it is going to dissappear someday. How do we plan for the future? How do we encourage people to be entrepeneurs and start other businesses and go to something else? Well, Norway is a place where you can have a national referrendum, an idea, we are going to convert this country in over 50 years to being electricity only. We are going to keep our gas money, but convert the country, so that all the cars, all the bulldozers, everything that digs ores out of the ground. All the machinery that melts them is run on electricity. The factories that make hardened steel is run on electricity. Every single thing that runs on the country’s electricity. And then run the electricity grid like the internet.
I loved this plan 5 years ago, but I never expected it to play out. Now it seems like Norway is falling into it by accident. The reason? Better EVs and strong government incentives for getting an electric vehicle (EV):
- 0% VAT on electric cars
- Low fees
- No toll and ferry fees
- Free public parking and charging
- Ability to drive in bus lanes
These incentives are limited to 50,000 Evs or until 2017, if the number is not reached by then. There are already more than 20,000 EVs on the road in Norway and predictions indicate that we will reach 50,000 cars by sometime next year. The incentives have made cars like the Nissan Leaf and more recently the Tesla Model S very popular cars in Norway. Some think of it as just a fluke or a benefit for rich people who want to appear environment friendly, but in reality do what they can to escape government taxes. Others, me included, think it is a huge step in the right direction. I think the car market, starting with Norway, is ripe for disruption!
Shipping delays
When the App Store launched in 2008, I decided I wanted to learn Objective-C. I had been a Mac user for 5 years, but never really been into programming. However, the iPhone had a new kind of magic: the app was the device.
Since 2008, I have downloaded every major revision of Xcode, paid the membership at the Apple Developer gym, watched WWDC-videos, studied at Stanford iTunes U, read my Cocoa bible, listened to all the right podcasts, made fancy coffee and still haven’t shipped a single app. Why?
My excuse has always been that I have had too little time on my hands, studying to become an engineer and working on the side. This is only an excuse. In reality, the thing I have needed is less time. I needed deadlines.
The problem is creating deadlines. I have been working on a Mac app1 for over a year now, on and off. Going from bursts where I write code for days to periods where I do not open Xcode for months. The only reason I stop is because I get bored. The reason I start again, is that I want to ship it. The problem was that the project had no real deadline. Exams and midterms were real deadlines. Wanting to ship an app was not.
I do not care for New Year’s resolutions, but it is a great time to think about change. At the start of 2014 I thought long and hard and decided it was more important to ship something than to get it right the first time. I added my app in iTunes Connect and set a date for when it was suppose to be made available in the store. The first real deadline.
Shipping an app is not just clicking submit and uploading it to the Mac App Store. Even though I use my app regularily, it required a lot of work to prepare for submission. The app had to become more intuitive, handle exeptions gracefully and of course follow the App Store guidelines. It had to have an icon. I had to make websites, help documents, setup support email and accounts for various social services, find beta-testers, make screenshots and an App Store description. This might be done in a relativley short amount of time for someone who does this for a living, but for someone who is doing this for the first time, this is a lot of work. And for someone like me who can tweak color-schemes for hours, this requires a LOT of time.
Not knowing what I was getting myself into, I have had to move my deadlines a couple of time. Moving a deadline is risky as it can devalue it, but by only pushing them slightly into the future I have been able to keep up the pace. I am now in the process of shipping my app. The only reason I got this far, is that I added the app to iTunes Connect and set a date for when it was suppose to be available.
I am not going to delight my users with every detail of my app, but I am going to ship it!
-
It would probably have started out as an iPad app if PDFKit was available on iOS, but it is currently not. ↩