A piece of software is usually not very useful on its own. Useful software features start when multiple pieces of software communicate with each other, exchange their data, and collaborate on the task of presenting data and interfaces to users.
Programs have to be designed with that in mind. What messages do they accept? What events are monitored? What messages are emitted? How do we authenticate and authorize communications?
Another important aspect of great programs is the clarity of the code, not how many tests there are or the number on the test coverage report. It is the simple question of is this code readable to someone else? Or better, would I, the writer of code today, understand this code a few weeks from now?
“There are only two hard things in Computer Science: cache invalidation and naming things.”
— Phil Karlton
Code readability matters a lot more than you think. Unfortunately, there are no good metrics for code clarity. Memorizing good software patterns and practices might help but are often not enough. Good software engineers just develop an eye for code clarity with experience and intuition. The writing metaphor here is perfect: just knowing a big list of words will not help you write concise and clear content.
Archive for October 2017
The Pixel 2’s free original-quality Google Photos uploads are only available through the end of 2020
Free, unlimited original-quality storage for photos and videos taken with Pixel through the end of 2020, and free, unlimited high-quality storage for photos taken with Pixel afterwards.
UPDATE: Someone at Google reached out to clarify this issue. As fair a response as I could have hoped for. Here’s the Q&A:
- Me: If I have original-quality photos stored for free, what happens to them once the end of 2020 deadline passes? Do they get deleted? Compressed? Do they stay there but I lose access to them unless I pay for enough storage so they fit?
- Google: They remain at original quality, for free. The change is only for taken photos thereafter.
Google learned American racism and amplified it back at all of its users.
As good as this sounds, though, there are some limits that Google isn’t discussing. The Pixel 2 line might not need dual cameras to do portrait modes, but that also means you aren’t getting optical zoom, a wide-angle lens or other perks that come with dual cams. If you’re too far from a concert stage to get a good shot, it won’t matter how good that one camera sensor might be. And given that the Pixel 2 phones use the same Snapdragon 835 chip as Android phones from earlier in 2017, you probably won’t capture 4K video at 60 frames per second.
There’s also the question of whether or not synthetic camera tests like this tell the whole story. While the original Pixels did end up having excellent cameras in practice, there were still flaws (for example, that lack of optical image stabilization) that didn’t become fully apparent until the public got its hands on the hardware. The DxO score is a good sign, but it’s worth being skeptical about Google’s claims until more people have had a chance to try the Pixel 2’s camera tech for themselves.
On paper, the multi-core result of the hexa-core A11 is 50 percent faster than the octa-core Snapdragon 835. As I mentioned above though, Geekbench doesn’t test other parts of the SoC. Things like the DSP, the ISP and any AI-related functions will influence the day-to-day experience of any devices using these processors. However, when it comes to raw CPU speed, the A11 is the clear winner.
This can be a bit hard for Android fans to stomach. So what is the reason? First we need a bit of a history lesson.
What is different about Apple’s CPU cores?
There are several key things to recognize about Apple’s CPU cores.
First, Apple had a head-start over just about everyone when it comes to 64-bit ARM based CPUs.
Second, Apple’s SoC efforts are tightly coupled to its handset releases.
Third, Apple’s CPUs are big and in this game, big means expensive.
Fourth, Apple’s CPUs have big caches.
Fifth, and finally, Apple’s plan of making processors with wide pipelines at (initially) lower clock speeds has come to fruition. In very broad terms, SoC makers can either make a CPU core with a narrow pipe, but run that pipe at high clock frequencies; or use a wider pipe, but at lower clock speeds. Like a real world water pipe, you can either pump water at high pressure through a narrower pipe or at lower pressure through a wider pipe. In both cases you can theoretically achieve the same throughput. ARM falls squarely in the narrow pipeline camp, while Apple is in the wider pipeline camp.
Why still think there will even be an iPhone? What about AR glasses and VR goggles and flying cars? Technology doesn’t move as fast as people think. 100 years ago people were convinced we’d be living in colonies on Mars and food would materialize from pills. Instead we haven’t put a person on a new celestial body in 50 years and Soylent not only tastes bad but made people sick. The iPhone will still be around in 2027 and will still mostly look like the smartphones we use today.
People have been asking me for my opinions on the iPhoneX and Future Apple. I Point them here. Man so much good stuff in this article, I could just post the whole thing… instead just go read it.