Thoughts on the upcoming Apple iPhone event


Apple is priced for an iPhone hit. What could go wrong?

“About 40% of Apple’s install base, based on our estimates, have not upgraded for three and a half years. If you combine that into a 5G, four phone release, we believe that really creates a perfect storm of demand,” Ives said, predicting that Apple could sell more iPhones this fiscal year than the 231 million it did in 2015.

It’s yet to be seen if consumers really care about 5G, too: A study from April found that “65.7% of consumers said they weren’t very excited,” while recent analysis has shown that 5G is in many cases slower than 4G. “5G coverage is still limited, and it’s unlikely consumers will pay extra for features they can’t use,” analyst Gene Munster recently said, adding that he expects 5G iPhone sales to quicken toward the end of next year once coverage has improved.

Watch Apple’s stock after the iPhone event on Tuesday. Facebook’s new Oculus ships on the same day.


I’m becoming a frequent reader of Protocol, if for no other reader than that they publish every day and the pressure of it flooding my RSS makes me scan it for interesting reading every day or so.

I’m one of those 40% install base that hasn’t upgraded in a few years. My family sometimes laugh at how old my phone is, since I’m on an iPhone 7 Plus, but when I buy a new phone this winter (because I’m not expecting to get it in the first run of phone sales, and because Apple screws up the first set of hardware anyways because of the sheer volume of hardware they put out), I’ll have a phone that’s newer than anyone in my family by at least a year and change, so that’s that.

But regarding 5G, I’m going to steer clear from those phones. First, I know that Apple will price them differently. But would you buy a phone with a network technology that’s not supported by a majority of the geographical area yet? Sure, in some places you’ll get faster-than-WiFi speeds, but those will be far and few between for at least two more years. Knowing USA’s shit record at rolling out new network technology (network vendors love spending on backend networking hardware that saves them money, but they’ve always been slow on customer-facing rollouts because those take a lot more money), I’d say 5G is still a good 5 years out.

This is the same as when we were buying a TV three years ago. The choice was between a Ultra-HD 65 inch behemoth that was moderately priced (this model’s price has fallen to CRT-TV rates now), or a 45 inch 4K TV that was grossly overpriced. I stayed away from the 4K even though my brother was trying hard to convince me otherwise. His ideas on 4K content being the norm are still not true, three years past. It’s just too much to expect from media and backbone tech companies to move too fast on expensive technology. Not their thing. Maybe with the coming 5G, 4K content will get a boost. But again, that’ll be 5 years from now, when South Korea will be swimming in a sea of 7G and 8K content.

Now, the fear is that Apple will introduce something radical in the 5G phones that will not be present in the 4G LTE phones. They’ve done this before with the larger phones getting an extra camera module, or OLED screens instead of LCD. They could very easily toss in a much better camera, making their 4G models less appealing, or add back the fingerprint scanner, which is infinitely more convenient than face scanning at night, or when you’re wearing a mask, or when you’re on the move, and so on.

But will they? They might have some ridiculous hardware thing up their sleeve – like a heart rate monitor (from Android phones of a few years ago), or a dedicated Siri button that you could customize to run shortcuts (again from Android phones a few years ago). Or maybe they’ll do something stupidly expensive, like throwing in a pair of airpods with the 5G phones (though this would fail if the airpods are not in the iPhone box, because them being a separate product will feel very un-Apple like, as in a small physical discount to get you to buy their product).

But most likely, they’ll toss in a year (or two) of their Apple One software subscription with the costlier phones. That would be perfect, because I couldn’t give two shits about their software subscription model. I’m not into Apple Arcade, or Apple TV+, or Apple Music, or News+, or extra iCloud storage, and certainly not their Fitness+ product.

I exclusively play one or two games on the iPhone – mostly sudoku and Call of Duty: Mobile. I have subs for Netflix and HBO and a good Plex Media Server. I prefer Spotify for their content and their high availability on Google Home devices. I find News+ to be a stupid, overpriced offering that everyone should run away from. I am impatiently waiting for Dropbox’s Family plan to drop, because that will forever solve all of my storage problems. And, well, have you seen the freely available catalogue of fitness videos on YouTube? Blows everything else out the water. Get lost Peloton, YouTube is the king of fitness videos!

So, yeah, if Apple sticks to only offering Apple One for free with their 5G phones, it’ll be very easy for me, and millions of others to stay away from those phones this cycle. Will this hurt Apple’s stock? Maybe.

I found it interesting that Protocol mentioned that Facebook’s Oculus ships the same day. Does it matter? No. Facebook took and effectively killed the Oculus. The latter was probably burning money like crazy and needed a sugar daddy, but Zuck isn’t the kind you want. Maybe, maybe, the next iteration of AR/VR will be propped up by 5G, ML-GPU chips, and Nvidia-ARM superchips. But as of right now, the more interesting thing Protocol could have pointed out is that Amazon’s Prime Day is on the same day as well! Amazon has granted me a $10 credit, which I’ll feel obligated to spend on something a lot more than ten dollars that day, as I ponder upon how much I’m going to enjoy my new iPhone, when I finally get it a few months later.

Running Compass on Vultr

Intro

Recently, I came across a tweet by Aaron Parecki, where he talked about a lifelogging app he built (and recently released) which tracks our location constantly.

I’ve been using Moves on-and-off over the years and partly due to it being now owned by Facebook, and partly because it’s a very crashy app (first time works fine, doesn’t open ever after that and stops tracking properly soon after; I assume the developer is now working on some darker features for the Facebook apps and so doesn’t spend as much time on his own creation), I’ve never been satisfied with Moves.

So, I downloaded Aaron’s Overland GPS Tracker app (free!) and set it up. The app is rather bare and the functionality is not well explained (within it). But it’s free, open source, a one-man job, and in line with the vision for indie dev, so it’s up to us to figure things out. I asked a few questions, got pointed to the settings explainer here. Well worth a read if you download the app.

The next step of the app was to install a remote server which ingests the data and makes it human readable and useful. As Aaron explains, the quest is to answer the question – “where was I at blah date at blah time?” The app’s official homepage recommends one of two servers to send the data to – a service called Icecondor and a server Aaron wrote called Compass. Compass looks nicer than Icecondor, is self-hosted, and I’ve been itching to play with Vultr.com‘s SSD Cloud, which competes with DigitalOcean in pricing and resources. So, here’s a walk-through for getting yourself setup with Vultr, installing Compass, and setting it up with Overland GPS to start tracking your location as creepily as Facebook and Google do it! 🙂

Vultr

Vultr is a nice competitor to DigitalOcean. At $2.50/mo for their cheapest VPS, it’s half the price of what DigitalOcean offers ($5/mo for the same RAM, storage, and CPU, but DO offers twice the bandwidth and, well, is trusted more). There had to be a caveat, right?

I signed up and the first thing I was told to do was to add money to the account. I had the option of not adding any cash and just attaching my credit card, but I’m going to end up using Vultr for something or the other, so I threw $10 at them (shut-up-and-take-my-money style!).

Then, they told me I can deploy a new server! I picked Seattle as my server location, Ubuntu 17.10 as my poison (which was probably a bad idea; more on that later), and scrolled down to the Server pricing. The $10/mo server was pre-selected for me and the $2.50 option was grayed out! (Seriously though, they should give names to these tiers. It’s silly to keep referring to the price.)

I googled around a bit and found out that they keep disabling the cheapest tier (they call it “Temporarily Sold Out”) as a sort of bait-and-switch model to drive new users to the more expensive options. But that sounds somewhat bullshit. If this was truly the behavior, I’d like my money back. But, and I’m glad I did this, I went back and started clicking around to look for solutions. It came in the form of New York! Turns out, they try to drive users to lesser used data centers while everyone who’s trying to set things up actually tries to use the “Silicon Valley” data center (seriously? Who the heck put a data center there???)

New York and Miami currently have open $2.50/mo tiers (ugh, that naming is so needed! I guess I’ll call it the Micro tier and the next one Mini), and networking is not a problem for me (who cares if a little more bandwidth is needed to get this non-time-sensitive data to New York and back), so I picked New York and threw my hat in the ring.

The server came up within… minutes? (Seriously, it was fast!) and I had an IP address to point to! Yay! But, what’s the password? The usual Ubuntu password didn’t work and I looked around at their docs and there wasn’t much to go by (Vultr’s docs aren’t as awesome as DigitalOcean’s. They’re good, just not there yet. They have a documentation bounty program if you’re interested, dear reader.) Then I checked the email which I would have received on server activation. It said that the password is on the dashboard (silly me!).

As I said before, Vultr’s documentation isn’t great, so I followed a mix of Vultr’s LEMP install here and DO’s LEMP stack installation instructions here. I installed PHP 7.1 with FPM (which, I must admit, was a little leap-of-faith because I wasn’t sure Aaron’s code would work without throwing up legacy issues, which it didn’t) and skipped most of the tweaking that Vultr recommends (YMMV).

Compass

Then, I copied over the Compass files (from here) and started following the Setup. The first issue was the .env file. There’s a few settings in there which are confusing, so here’s what I did –

BASE_URL -> This is your website. It uses HTTPS. More on that below.

STORAGE_DIR -> This is the data directory which is supposed to store your incoming data. Oddly enough, it doesn’t. When you use the application, the GUI prompts you to make a ‘database’ (it should be called a ‘project’ Aaron). This database makes its own folder in the Compass directory, so this variable invariably doesn’t get used. Set it anyways.

APP_KEY -> This confused me a bit. I don’t think this is a password. But I set it to something like a password. It’s a 32 char string, so have fun setting it up.

DB_CONNECTION -> Set this all up as you would any other MySQL application. Use the WordPress tutorial by DigitalOcean as a hint of what to do.

DEFAULT_AUTH_ENDPOINT -> This was one of the more confusing things I saw. Was the idea that this was some generic authorization? To figure out, I found Aaron’s own Compass website and tried to login. Turns out Aaron uses a very neat authorization process. There’s no password. All you do is tell which Indie authorization website you want to use to authenticate who you are and it’ll allow you to login. Specifying this URL will mean that if you can login to that other website, you can login to this website. The default is set to ‘https://indieauth.com/auth’. If you let this remain, it’ll mean that anyone who has an indie auth login anywhere will be able to create an account on your Compass server and potentially use it for their own data. So, I authenticated myself into Aaron’s server and now I have an account there! Of course, I don’t recommend this. I changed this Endpoint to my withKnown.com site. That way, only people who can login to my withKnown site can login to my Compass server. Who can login to my withKnown server? Only me. 🙂

There’s a piece of the puzzle which needs addressing. APP_DEBUG is set to true right now. So whenever there’s an error, Compass spits out the entire MySQL connection string, including password, as well as very important system information out to anyone to see. I suspect that once you’re done setting up this server and you trust it, you should follow the Laravel process of ‘migrating’ the application from dev mode to production. This will help secure your application.

 

After this, I moved on to running Composer to install all the dependencies which I needed for Compass. Here’s all the issues I faced there –

“Composer not installed” – Install using

"apt install composer"

“danielstjules/stringy 1.10.0 requires ext-mbstring” –

"apt install php7.1-mbstring"

“phpunit/phpunit 4.8.21 requires ext-dom” –

"apt install phpunit"

“zip extension and unzip command are both missing” –

"apt install zip unzip"

Now, you can run ‘composer install’ and it’ll work.

 

nginx

I recommend using nginx. You’ve got a small server and you don’t want Apache to drown the memory, so just use nginx.

Aaron’s config for nginx were clear, but not helpful, because it doesn’t go with the usual nginx config floating around tutorials. So here’s mine (relevant portions only) –

index index.php index.html index.htm;
root /var/www/html/compass/public;

location / { 
    try_files $uri /index.php?$args; 
}
location /index.php { 
    include snippets/fastcgi-php.conf;
    fastcgi_pass unix:/var/run/php/php7.1-fpm.sock;    
    fastcgi_param   SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
location ~ \.php$ {
    include snippets/fastcgi-php.conf; 
    fastcgi_pass unix:/var/run/php/php7.1-fpm.sock;
}

At this point, I thought I was done. But then, when I tried to open the site, I ran into some very nice errors in the application. First of all, notice the root. The root of the application is not the compass folder itself, but the public folder inside it. This is not mentioned anywhere in the documentation and was well worth twenty minutes of “what the heck?” and then some. But you have it on good authority that this is what you’re supposed to do.

Secondly, the application wasn’t done making me install stuff. So I also had to install curl –

apt install php-curl

Then, I wanted to digress a little and make my life a little more difficult (or easy, depending on who you ask). Aaron’s own Compass server uses Let’s Encrypt based SSL. I’ve always wanted to secure my own sites using SSL, but I’m lazy. For this, I thought, why not!

I found the CertBot instructions for installing with nginx and Ubuntu here. They’re pretty straightforward, with a small error that I ran into – Cloudflare. I use Cloudflare as my DNS, security, loadbalancer, God of Small Things. Cloudflare provides SSL. It’s literally a one click. When you add a new A record to your domain (such as compass.p3k.io), it adds DNS and security itself by routing traffic through Cloudflare’s network. CertBot doesn’t work with that. CertBot needs direct access to the server. So, I had to disable Cloudflare’s lovely protection for my subdomain and let certbot do it’s job. It did so. It automatically modified the nginx config to accept HTTPS-only connections and to route all traffic to HTTPS. I was even able to setup crontab to auto-renew certs –

43 6 * * * certbot renew --post-hook "service nginx restart"

After this, you run the job queue commands as listed by Aaron and you should technically have a running website. But there’s a catch, as there always is. This server that I’ve got is not a ‘mini’. It’s a ‘micro’. 512 MB RAM is not enough to run MySQL, Ubuntu 17.10, nginx, php-fpm, and actually run an application on top of that. So, I ran into a very cryptic error –

[PDOException]                                    
SQLSTATE[HY000] [2002] No such file or directory 

At this point, I had the application running and I was able to visit the site and all, but try to login and it threw this error. The php artisan command also started throwing this error (by the way, you’re supposed to run the ‘php artisan queue:listen’ command in the background for this server. Follow the instructions here to set up supervisord to do so). Most people on StackOverflow seemed to think that if you replace ‘localhost’ with ‘127.0.0.1’ in the app’s settings, it’ll start working again. But that didn’t help. Finally, someone recommended (not in real-time. I’ve only once ever in my life used StackOverflow in real-time to get answers to a question) restarting MySQL. Well duh.

Oh? MySQL won’t restart. Why???

It was this community question on DigitalOcean that gave me the answer I was looking for – I had run out of RAM. Turns out, 512 MB is just enough to play with a server, but not enough to run it for reals. Nonsense. Let’s just add a swap!

I used this excellent and very easy DO tutorial to add swap to my VPS. Notice the shade it throws at you for trying to use swap on SSDs. They specifically say that it doesn’t recommend using swap for DO “or any other provider that utilizes SSD storage” and that this degrades hardware performance for you and “your neighbors”. DO recommends upgrading your instance so it has more RAM instead of using swap. We don’t listen.

Added swap and voila! It’s working! MySQL fires up and the app stops throwing silly errors! I ran htop all night on the instance to monitor for Memory and Swap use and it works just fine! At last, we can login!

 

Overland

OK, we logged in using our designated Indie Auth website! Now what? You’re staring at the blank screen that recommends you create a database. Do it. You give it a fancy name and it spits out a bunch of configuration. Now what? First of all, change the Timezone in the settings to where you are. It’s set to UTC right now, but for me, it’s PST. Also, use

dpkg-reconfigure tzdata

in your Ubuntu command line to change the timezone of your server to where you are. Remember, my server is in New York. But I told it that its timezone is America/Los Angeles. Because.

OK! You’re good to go! You can throw some data at this server! Head over to the Overland GPS app and add this endpoint to it. Only, what’s the endpoint? I added just my compass server’s URL and that didn’t seem to work. Then I looked at the app screenshots and there it was –

https://compass.p3k.io/api/input?token=E6ncEYWxT...

That’s your Receiver endpoint! But, where should I find this? In your Compass ‘database’ settings, You’ve got a read token and a write token. Next to the write token is a link which says “show API endpoint”. Click it and out pops another line which shows you the above. Simply copy this and magically move it to your phone (I WhatsApp myself these things) and you can plug it into the app and start sending data! The first time you plug it in, the app will collect all the data you’ve accumulated till then (I had some 25000 points of data to transmit) and smoothly move everything to the server (Aaron really has done a great job with the app). After that, it’ll move the data in batches the size of which you can specify (God knows why).

But. You’ll see some odd things. For example, in the afternoon, the server’s map changed the date over to the next data (I suspect this is because my server was still on UTC time. Running the tzdata command above should solve this). Also, whenever there’s no data (or the data hasn’t loaded yet), the map points to Portland. I get that Aaron is from there, but I think we should be able to configure this (Seattle, woooo!) because it’s a little jarring. Finally, this will teach you how bad your GPS data is anyways. Most of the time, the map has me squarely in the water, or swimming out and coming back, or has me cross the I-90 bridge by, well, not crossing the bridge but swimming along it). But, that’s just the world we live in.

 

Questions/Issues
  1. Why does this server need MySQL? The Compass documentation says that the data is stored in flat files. Then is the MySQL database only used for temporary storage of data before it’s processed and saved to flat files?
  2. Is HTTPS a requirement of the server or a nice-to-have? I am not sure about this and I just took the safer route.
  3. The app, in debug mode, spits out way too much information which it shouldn’t. I’d like clear instructions on migrating it off debug mode.
  4. Did I decipher the meaning of DEFAULT_AUTH_ENDPOINT correctly? Not sure. Also, Aaron, if you’re reading this – what do I do with my login on your Compass server? Can you allow people to store their data on there, just for visualization (and wiped every night so as not to flood your server).
  5. I still don’t know what the best configuration is for the app (battery-use to tracking). If you’ve got pointers, throw them in the comments below!

7 days with the Apple Watch

I was recently gifted the Apple Watch by my girlfriend and despite my initial apprehensions, I love having this device strapped to my wrist. I was test-driving the Pebble watch before this and I have an analog and a digital watch I alternated between before that. But the Apple Watch definitely has blown all of those out of the water.

As my brother Nipun once said –

Continue reading

Well, what about the jailbreak?

iOS8 is here today and as I always do before an iOS update, it’s time to audit my jailbreak. Of late, I’ve grown distant from the jailbreak idea as such. I still have a jailbroken iPhone 4S and iPad Mini 1, but there’s barely much happening there.

RAM? What’s that?

The first problem with my jailbreak is that it’s on a device that’s now, well, old. The iPhone 4S has 512 MB of RAM and as much as Apple fanboys will tell you that you don’t need RAM because Apple has a) tight integration with their hardware or b) amazing tricks up their sleeves that put apps to ‘sleep’ as soon as you minimize them, the truth is that if you jailbreak, you need RAM. Continue reading

It is 1984.

Big Brother is watching. This is the ominous note that strikes me whenever I think about George Orwell’s amazing book. It makes sense in a senseless world. We are aware of our governments watching us. But I’m not going to talk about intrusive governments. I’m going to talk about something else. Ever since I joined ADN, I’ve been part of a growing debate over privacy concerns regarding Facebook and developer concerns over a now well-locked down Twitter API. I’ve read about Facebook’s new Graph Search, I’ve read about Twitter’s fight with Instagram and I’ve read about Dunbar’s number. But today, when I saw a link about Twitter being the fastest growing global social platform, is when I realized where all of this is going.

Many months ago, I read an interesting article on Quartz about how Facebook is looking to Africa for its next Billion users. The method is simple – provide Facebook access for free via SMS. In this classic move, people get addicted to the free social network and Facebook gets marketable user data on a Billion more. This despite the fact that we’ve well established that Facebook isn’t what it’s all pegged to be – a way to connect with people. Then I saw this new post about Twitter today and I realized where this is all going. Those of you who’ve read 1984 will know that in the book there are three main countries, each too large to be defeated by the other two, even if they try to combine forces, which never really happens because of ever-changing alliances. All this while, the common people of each State are fed misinformation and trained to accept it as fact. This is an Oligarchical system that cannot be broken. There is a perpetual war and all available resources are concentrated towards it, sacrificed from availability to common man with the hope that it’ll help in the war effort. But the most important facet? Everyone is watched. Continue reading

DotDotDot.me: Instapaper finally has a replacement

All those of you who still remember reading paper based books, think about one thing – did you ever keep a separate notebook to make notes about your comments on certain sections of the book or to mark sections you really liked? Wasn’t it just better to just mark the sections in the book itself, wasn’t that more convenient and when you’d pick it up again, you’d remember the context? Similarly, in the digital world of web pages and ebooks, what’s better, keeping a separate service that you use to mark web pages you liked or to keep a single service where you can save the web pages, your comments and bookmarks and even be able to search through it all?

Continue reading

The Decreasing Value of Physical Goods

Today, most of us are spending so much time online and on our smart devices that I feel that the value of physical items in our lives has decreased a lot. A few days ago, a friend took me to a store in the 29th street mall. It was a toy store that opened just for the holidays and on that day, everything in the store was 50% off. Needless to say, most of the store was empty, toys and funny calendars having been bought by people taking advantage of the sale. I bought a nice glass chess set on the cheap and then had a chat with the store owner. Apparently, this was a seasonal store that was closing today. She told me that about eleven hundred such stores open across the country during the holiday season and this one was closing that day. Everything that was left today was going back to the factories. I looked around the store for a while. Most of the good stuff that I’d seen in the shop a few days ago was already gone, but a lot of really interesting games and toys were still there.

Continue reading

Copy-Paste: The saga of the inferior clone

I love reading two blogs – EggFreckles and Marco.org. Both these blogs talk about technology but are highly personal, reflecting the blogger’s perspective on topics.

Yesterday, I read a recent Marco Arment post talking about his latest offering – The Magazine. The Magazine is a high quality biweekly that has the unique distinction of being an iOS only app. Notice how I’ve used the words magazine, app and biweekly in the same sentence. That’s because this new service, like everything Marco touches, has created a new space for itself. It’s not just a print magazine being published on the web/mobiles *also*. It’s not just an app that has articles, that’s a job for the Kindle or the Instapaper apps. It’s not just a news stream or a ragtag collection of articles from all over the web. Continue reading