A few days with the Echo Auto

I got the chance to buy the new Echo Auto from Amazon recently. I could only order one, so I’m playing with it now and will pass it on to my brother soon.

Some thoughts on this new product from Amazon –

1. Terrible packaging – Amazon has this idea of basic packaging for their products. I was recently in the Amazon 4-Star Store in Seattle and noticed that they’re selling their Kindle Paperwhite in an blue (cardboard? paper?) box with bare-minimum packaging. This is both great, because we’re reducing waste, and terrible, because the overall experience is cheap for a >$100 product. The same is true for the Echo Auto. It came in a black box that barely fit the product, charging setup, and a booklet as cozily as possible. The unboxing experience was not impressive.

2. Not-so-good setup, partly because of the app and partly because of Bluetooth – The Amazon Alexa app is your be-all for the Echo line of products. I updated the app before trying to connect the Echo Auto with it and the setup experience was meh. The app is janky and does an OK job of connecting with the device. The problem for me was two-fold – first, the idea that the Echo Auto doesn’t directly connect with the bluetooth of the car, but goes through the app. This has the effect that if you’re in an underground parking, or if your phone has killed the backgrounded app, the Echo Auto gives you an impolite beep as soon as the Accessories come on in your car, to tell you that the Echo Auto has lost the connection with the app and whenever you can, you should start the app so that the process can be completed. I park in an underground parking. This happens every, single, time. This dependence is a boon, because you’re not buying a data plan for yet another product, and you’re not constantly worried about an expensive product being stolen from your car, and because somehow, apps like Spotify work perfectly through this setup, but the impatience shown by the device to connect to its conduit is irritating. The second issue is that BMW doesn’t seem to have a good bluetooth vendor. Their bluetooth is one of the worst I’ve ever used in a car. But hey, this is a post about the Echo Auto, so let’s focus on that.

3. The wait for the beep is funny – when I setup the Echo Auto, the setup explained that I must wait for the beep of the device before I give it a command. So I followed the instructions – Say “Alexa”, wait for a few seconds for the beep, and then give it a command. Nope, not worth it. I have first gen Echo Dots and Google Home Minis and they launch a lot faster than this! I guess this has to do with the device first confirming that the connection with the app is present, and then letting me give it a command. But here’s the thing – after only the first few commands, I stopped waiting for the beep, and lo and behold, it still works! So even if you don’t wait for the beep, the Echo Auto passes everything you say to the app and understands the command. This is both great, and weird. If it starts recording as soon as you say the magic word, then the beep is nothing more than an unnecessary audio feedback, specially since the device also lights up LED to confirm that it’s listening. If this is about a11y, give me the option to turn off the beep.

4. It listens to any Alexa word on sentence – It seems like the Echo Auto doesn’t have a filter for conversations. I can be talking about Alexa in a sentence and the Echo Dots don’t pick it up, but the Echo Auto does, and then complains loudly when it doesn’t understand the command that I didn’t give to it. It’s a first gen Echo Auto, so these are issues that can be ironed out, but it’s not a first gen Echo, so these issues shouldn’t exist to begin with.

5. The air vent is dumb. Just dumb. – When I got the package, it came in a typical Amazon yellow jacket, with not one but two things in it. The Echo Auto in a black box, and the Echo Auto air vent mount, in a blue box. This $15 accessory came free, and I set it up, and took it down within a day. First of all, all air vent mounts are dumb. If I’ve got a thousand dollar phone on an air vent, and it’s freezing cold outside, my expensive phone is being blasted with super hot air on its back. That is NOT how you treat your electronics. So I have it out against air vent mounts in general. On top of this, the wiring is just ugly and inconvenient. I understand that the Echo Auto needs to be in a place where it’s easy to use, and centrally located to hear all voices, and should not cause the driver to move their eyes off the road, but instead of the air vent, I just placed it next to the BMW media controls and it felt just right over there. A weak 3M adhesive strip would work wonders, but even that is not needed, as the USB power cord can just be reeled in and used as a leash for the Echo Auto. So Amazon, thanks for the $15 freebie, but it’s useless.

Overall, the Echo Auto is an interesting product. It conquers the one place Amazon hasn’t fully reached yet – your privacy in your car. It works great with apps and services that the Echo line has tied up well with – ask it for the news, or tell it to change music on Spotify, and, thanks basically to Spotify’s absurdly good API, it all works smoothly. But the device itself is jerky. It’s dependence on your phone, its imperfect listening skills, all need an update. So if you want to play with it, sure, go for it, but maybe wait for v2 or v3 to come along.

I give it two out of five stars.

Four years with the Apple Watch

Recently, I completed four years of owning the Apple Watch, and today, my watch told me that I’m 75% of the way to completing a thousand move goals.

I think it’s a good time to talk about the Apple Watch. I own the original, first-gen, Series Zero, the one that doesn’t support the latest WatchOS, and doesn’t calculate resting heart rate, because, according to Apple, it doesn’t have the battery to support that function. But that’s OK. I can’t miss something I’ve never had.

Very soon into owning the Apple Watch, I knew I had to make some compromises. Only a few days in, I had to turn off notifications for WhatsApp, because watchOS had no notion of grouping notifications. Progressive improvements may have made things better, but this year is anyways the year when I’ve sworn to remove as many notifications as possible from every device I own.

I also realized, as the watchOS version number increased as frequently as it did, that there is probably a hard stop to when my watch will no longer be supported. I think iOS 13 is that time. The watch might still work, but OS support will drop, apps will stop working, and eventually, Apple will kick this device to the curb. My next phone might not even support this elegant piece of hardware that I’ve strapped to myself for most of the last four years.

But till that happens, I can enjoy what I’ve got – the watch is pretty great at recording my calorie burn – I’ve compared it with OrangeTheory’s Mio Link devices and I can’t say whether that’s a testament to Mio Link or the Apple Watch. The watch is also great at notifications for things that are timely. Sometimes, I’ve noticed that when I’m intensely focused on something, I’ll ignore notifications, even though I’ve set them on the highest vibration. But other times, noticing a notification right as I need it is great!

Over time, I’ve removed apps and features from the watch. I used to let the Watch app install pretty much every iOS app’s corollary to the watch, but that’s just taking space, unnecessary processing, and battery. After removing all but the most essential apps, the battery life almost doubled for me. At this moment, I have a total of three third-party apps on the Watch, out of which one is for near-daily use, while the other two are purely for navel gazing.

Apple introduced some new features to the WatchOS at some point, including a feature called theater mode. The reasoning was that the watch would turn on at inconvenient times, say in the dark, when watching a movie, and this would prevent that. I have a few thoughts on that. First of all, within a few days of owning the watch, while on a walk, I tried to raise my wrist to wake the screen. No matter what I did, I couldn’t get it to work! Somehow, my walking was completely negating the action of raising my wrist. I had to hard stop to get the watch to work, and I wasn’t even walking fast, it was a leisurely stroll. Since that day, I’ve had this gripe – the Apple Watch needs to grow up and join other watches in letting me see the time any time of the day. Until that happens, until Apple launches an OLED version that includes always-on (something that is glaringly missing in the latest, most expensive iPhones ever), the Apple Watch is NOT a watch.

Secondly, what kind of execs and movie-goers work at Apple? What amount of gesticulating do you do in your average movie? Just wondering.

Lastly, Apple advertised the watch as being able to wake up 90 times in an 18 hour day. This is nice, specially since that’s far more than the number of times you probably actually look at the time on your watch. But all those times that the watch misfires because it didn’t read your intent correctly are lost chances, are they not? So instead of releasing theater mode, I’d much rather Apple work on improving battery life. Now that Mr. Thinner-than-before is out the door, maybe this will come to pass? (Incidentally, turning off raise-to-wake is one of the things recommended by blogs to improve your watch’s battery life, and frankly, that is a stupid and terrible idea. If you have to tap the device every, single, time, to look at the time, just use your iPhone.)

The Apple Watch is a great piece of technology, but there’s one more thing that irks me to this day – that the time is relegated to the side. I don’t know if this is a patent issue, or just a design philosophy, where the time is the time, but the other features are what are supposed to matter. But the fact that Apple embraces this idea that the digital watchface must put everything other than the time in the center is a far cry from what I expected the Apple Watch ethos to be.

This is not an ode to the Apple Watch, nor, hopefully, just a list of gripes. I love this watch. It’s got a simple set of features that matter to me, and the price is just right for something I’ve worn for four years and can continue wearing for another four at least. A few years ago, I wanted the milanese loop band pretty badly, so I bought one off Amazon for a couple bucks. You know, those ones that ship from China and take a couple weeks to get here. It was such a bad experience that I swore off third party bands completely, wearing only the original that came with the watch. Recently, I changed bands, and this new band, though it is a complete mismatch for the watch color, feels pretty great and sits well! I feel like I’ve given the watch a new lease of life, even though the original band still works perfectly and sits on my side-table, vacantly staring into the abyss.

There’s not much else to say about the Apple Watch at this time – the latest hardware features that Apple introduced – the larger screen, and the ECG, are novelties which I wouldn’t ‘upgrade’ for. If they introduce something like a glucose monitor, or, like, a thermometer – anything that enables an elevated level of idle introspection – then I’ll consider buying the next watch that comes out, and only when this one is all but dead.

Till that day, I charge it every day, even though nowadays the battery lasts me a day and a half (I’ve reduced animations on the watch, which greatly helped my sanity, and the battery), wear it every day, and still grumble when it dies on me mid-hikes. I wanted to write exclusively about the Apple Watch, without once mentioning traditional watches, but I want to say just one thing – I’ve seen this watch on almost every wrist lately – from service industry workers, to gig economy laborers, to bloggers, to world travelers. The Apple Watch is versatile, but maybe it’s still attractive only to those people who have always worn watches. After all, keeping track of time is not something everyone bothers with, is it?

Blog Experiments

I did two things this week regarding my blog –

  1. I read a lot on Instapaper, mostly non-fiction articles. I make a lot of notes and highlights and all of those come over to this blog. Why? Well, at some point I thought it would be a good idea to write articles based on my readings. It’s also a way of preserving all of those thoughts in case Instapaper some day goes kaput. But the fact that I have all of this text sitting in my blog, counting against my word count, and not contributing to my readership has been irritating me ever since I started the practice.

    A few days ago, I setup a new blog on WordPress – https://nitinsnotes.home.blog/ with the objective of posting everything there instead of here. If I can build a readership for the ideas and quotes I publish there, I figured, I can bring over the readers back to this blog eventually and grow the kind of things I write about.

    There’s only one problem – I read a lot of varied topics, but the one I write notes most about is politics. I’ve never been comfortable airing my views on politics. It was never taught to me to be overtly political, and the environment I’m in now doesn’t allow for many public mistakes. Whether this is a perceived threat or a real one, I do not care to find out.

    So, within a day of creating the blog, I’ve abandoned it. All my comments are still coming to this blog and hiding in plain site – they are only visible to logged in users. So if you’re curious as to what I write about, ask me and I’ll create an account for you on my blog and let you in. Otherwise, I’m happy writing those thoughts for myself for now.
  2. The other thing that happened was that I noticed that my blogs were running into some technical difficulties. I was not able to update plugins or open MySQL in the browser to take a look at it. Turns out, my VPS thinks it’s run out of space, despite the fact that I recently updates from a 20 GB node to a 50 GB one. I noticed that the /var/mail folder was choked up with thousands of files, and the ibdata1 file has overgrown. I cleared up the former with a nice ‘find -delete’ command, and for the former, I’ve got a script that takes the backup of all my blogs, deletes the ibdata1 file, and reups the backups to bring everything back online. In the end, it tells me how much space it saved me.

    The last time I ran this, maybe last year or so, I regained about 5 GB. So I ran it again. Turns out, I’ve updated my MySQL version somewhere in between and the thing completely broke, without giving me back my two blogs! Gulp!

    Luckily, I read through the script and recovered my blogs, without losing much uptime or any data. But this sort of thing is exactly what scares me. I’ve got scripts that take backups regularly, but it never feels enough.

    Regardless, has anyone else dealt with large ibdata1 files? What can I do about that? Also, I still don’t know why my system thought it’s run out of space. Maybe the sheer number of files in /var/mail? Due to the assumed lack of space, MySQL crashed and wouldn’t launch back up, until I deleted the mail folder’s contents. So I’m not sure I want to be in this situation again!

Lunch is all about food. Sometimes it’s for the body, other times, it’s for the soul.
Finished reading this beautiful collection of short stories by #VandanaSingh and I can not recommend it more. It’s brilliant, lush, full of characters and locales that feel real, in situations that feel surreal.
Go get yourself #AmbiguityMachines if you’re looking to read some class writing.

Reply to Khürt on micro.blog

Khürt, I absolutely get a lot of value from my micro.blog account. First of, this is a great community of bloggers, coders, amateur photographers and even one harpist. I’ve found this to be a great continuation of the community I found in app.net, which subsequently splintered into a few groups. I am, in fact, thinking of trying to woo some esoteric friends off twitter and onto here, though I’ll be guiding them to use micro.blog for free, because the economics doesn’t work out for everybody around the world.

Second, micro.blog is an interesting experiment in blog comments. The other day, I saw your post about house parties and responded. I knew I could respond right here, but I had a little more to say, so I put it on my blog and let that reflect here. That exchange can happen independently too, but this centralization of feeds is difficult to attain. We’re all avid users of RSS readers, but with that comes its own challenges. In some senses, micro.blog is my people feed reader, while my other feeds readers are relegated to follow webcomics and networking news.

Third, any tool is what you put into it. micro.blog is one of the most visited tabs in Firefox on Windows. Which means I every time I want to unwind from a task at work, I come here and check things out. But it’s not the most visited app on my phone. Mindless browsing time goes to Instagram or Fiery Feeds. So if micro.blog doesn’t fit your time-flow, it’s not going to give you what others get from it.

Lastly, deleting your account – I know it’s the cleaner thing to do. It severs your ties, Manton is obligated to delete your data, it removes the mindshare micro.blog takes from you, etc. And frankly, you’d be better off deleting your account than mindlessly posting to it like a bot, or like dave. But not deleting it gives you the opportunity to come back whenever you want. If you want to keep the connection open, however tenuous, keep this account in your back pocket for a rainy day.

Also, if it irks you to pay for micro.blog, know that I’ve not paid for it in months! I post to it using my own blogs (multiple of them), and I primarily use it for replying to other people’s posts. One issue with not paying is supposed to be that I can’t start conversations. But I get around this by posting through my liveblog, which has an RSS feed without titles. There’s no shame in using micro.blog like this, because Manton can tighten the noose whenever he wants, but micro.blog seems to explicitly allow free use. It’s part of the growth model – to allow free users like me.

I hope this all helps you make the best decision for you. I would love to continue conversing with you, and I will do so through our blogs, if you decide that micro.blog is not for you.

It’s your house, it’s not your party

It’s my house. It’s my party.

Source: You can leave at any time by Khürt Williams

Khürt feels that social networks are not like jails, because you’re not being held at gunpoint and must stay. They’re like a house party, sponsored by Khürt. It’s his house and he can boot you any time. But that also means that you can leave whenever you want.

I don’t think that analogy is correct.

Social networks are like a sponsored agora – an open space that feels like a welcome hangout spot, but which are nevertheless run by someone. That someone can have their security guards kick you out, or you can up and leave.

But you’re not staying because you’ve made your peace with the privacy issues. You’ve made your peace with the privacy issues because all your darn friends are there and it feels good to hangout with them.

Khürt is pretty active on micro.blog. If tomorrow Manton feels that Khürt is not welcome any more, he can kick him out.

But that arbitrariness is what has caused problem for twitter and Facebook before. If it truly were their party, people who are kicked out would be blamed for their misdeeds. But that’s not how it works. Increasingly, you see that these networks make the mistake of kicking someone popular off, or kicking them off for the wrong reasons, and a cycle of blaming these networks runs its course.

It’s their house, but it’s not their party. The party is brought there by the people. In Facebook’s case, the party was brought there by the people signing up from their college times. In twitter’s case, the party was equally brought by the people as well as the developers.

Twitter chose to kick out developers a few years ago and they’re still reeling from the effects of that move. It’s held on to the people because of the critical mass. Same for Facebook (critical mass and dirty moves in that case).

If enough people leave Facebook today, as they did Uber during the #deleteUber campaign, and MySpace during its years of attrition, and tumblr during their recent purge, the party gets dull. No matter what the host does then, the party is already dead, it just needs to get called.

That time has not come for WhatsApp or Instagram, but has pretty much come for Facebook. People are tired of the big blue’s shit. They just can’t leave yet because of all their friends there. The next generation chose to skip Facebook altogether and just go for SnapChat. How long can Facebook keep the party running?

Thoughts on Chris Hughes’ call to break up Facebook

I took my own sweet time to read this story, collecting some of my ideas and publishing them here. I’ve already had a lot of online and offline conversations around the topic, but posting these thoughts here for posterity and discussion makes sense to me.

Opinion | It’s Time to Break Up Facebook

Jefferson and Madison were voracious readers of Adam Smith, who believed that monopolies prevent the competition that spurs innovation and leads to economic growth.

The F.T.C.’s biggest mistake was to allow Facebook to acquire Instagram and WhatsApp. In 2012, the newer platforms were nipping at Facebook’s heels because they had been built for the smartphone, where Facebook was still struggling to gain traction. Mark responded by buying them, and the F.T.C. approved.

Facebook’s version of Snapchat’s stories and disappearing messages proved wildly successful, at Snapchat’s expense. At an all-hands meeting in 2016, Mark told Facebook employees not to let their pride get in the way of giving users what they want. According to Wired magazine, “Zuckerberg’s message became an informal slogan at Facebook: ‘Don’t be too proud to copy.’”

They create immense amounts of data — not just likes and dislikes, but how many seconds they watch a particular video — that Facebook uses to refine its targeted advertising

One big question is, of course, who owns this data? The data would not exist on a platform which doesn’t have the technology to track your time in seconds. The data is also not really relevant to you in a meaningful way. So unless there’s a way to make it meaningful, there is no point in us users claiming ownership of it. Even if we did, in most aspects, the data is owned by Facebook and that is the basis for them not deleting it even after you’ve asked for ‘all’ of your data to be deleted. In that context, ‘all’ is all of the data you’ve given to Facebook, not the data they’ve generated on you.

he went even further than before, calling for more government regulation — not just on speech, but also on privacy and interoperability, the ability of consumers to seamlessly leave one network and transfer their profiles, friend connections, photos and other data to another.

Chris Hughes says in the next line that these proposals were not made in bad faith, but from where I am seeing, these are nothing but bad faith. One can only say these things from a position of privilege, of power. Where were these ideas when twitter launched periscope with Facebook friend-finder integration?

The fact is that what Zuck is proposing here is nothing different from what Microsoft did for Apple all those years ago to head off anti-trust investigations. Why not head off an investigation by propping up a few lame-duck competitors who Facebook can kill off in the name of API changes whenever it feels threatened?

Zuckerberg’s words may seem like music to your ears, but they are nothing more than an empty promise. Already, you can export your Facebook data, and there are services built around importing it and doing stuff with it. So how is his proposal any different?

Will Facebook provide an API to easily move all your data and conversations, and photos off? Will Facebook provide precious server time required to sync out every last bit of data through a legit API? I don’t think so.

Even if they do, the point remains that he’s doing this just to save his own hide. Paying lip service to the open web and interoperability is the easiest thing he can do as CEO.

Besides, Facebook’s value isn’t in the data you provide it with. It’s in the data they generate about you. Today, your uploaded data might be in the couple hundred MBs. But I can assure you, the data they’ve generated about you, and the data you don’t know you’ve uploaded (including stealthy location tracking, cookies, and third party browsing data they’ve bought about you), probably stands in the GBs.

That vast difference is something Facebook will never give you access to, since they can legally claim that it is data they have created and they own. You taking charge of that data is the real threat to Facebook.

Zuck knows this only too well and is trying to ward it off.

Imagine a competitive market in which they could choose among one network that offered higher privacy standards, another that cost a fee to join but had little advertising and another that would allow users to customize and tweak their feeds as they saw fit. No one knows exactly what Facebook’s competitors would offer to differentiate themselves. That’s exactly the point.

Another example of hypocrisy from Chris. We know there are social networks out there today that do all of these things. There are exceptional services built by dedicated people who believe in the ideal of an open web. Just recently an instagram replacement was kickstarted. It took a long while to get it to the bare minimum it needed to fund successfully.

Why? Why did Chris Hughes not put his money where his mouth is? Why not fund all these competitions as an outsider? He’s arguably for the money for it.

App.net was kickstarted by the people, but along the way they took funding from a VC firm. Some people saw that as a betrayal of the idea with which it began, and ADN ended up shuttering under a year later.

Hughes doesn’t need to singularly fund social networks and exert control as a VC or angel investor. He can fund them as an individual and just use his voice to amplify the message – that open web ideas do exist and have the potential to be disruptive.

The thing is, that Silicon Valley is about control. Right now, the definition of control is Facebook. It’s a behemoth that can eat up most of the things in its path, whether it’s WhatsApp and Instagram, which it acquires and turned into its pawns, or Snapchat, which it is trying to destroy by replicating it and using its networking effects against.

Look towards the (inter)networking world – everyone needs networking and so it’s not that sexy a field. But even though there’s a behemoth, Cisco, it can’t eat everything up. Every few years a company springs up that can cause serious competition to it based on new technology, or better production cycles, or just a fresh pair of eyes on the same ideas networking has been revolving around since the last decade.

So Facebook doesn’t need to be broken up in order to be made irrelevant, be it the right approach or not.

The F.T.C. should have blocked these mergers

Its first mandate should be to protect privacy.

It’s interesting to talk about privacy only in terms of Facebook, but it is infinitely more important to talk about privacy in a broader sense.

The US needs an agency that actively works with companies and individuals to thwart attacks on our data, to help secure information, and to educate the people about these topics. Right now, there’s a haphazard group of organizations doing this, led perhaps by the FBI, which steps into the case when hospitals and other organizations are attacked.

There needs to be an organization that ‘polices’ the use of data. Of course, there’s no reason to stifle new growth, but this org would work with, and actively target companies that are becoming big, and perhaps even white hat attack them to show weaknesses.

This latter role has been left to private entities till now, and that has worked out fine for most people. But formalizing it means making sure that the US has a pulse on cyber warfare in the civilian realm, which is where it is more active and deadly currently.

Imagine a CDC for cyber warfare and privacy issues.

But there is no constitutional right to harass others or live-stream violence

Mark Zuckerberg cannot fix Facebook, but our government can.

Can they, though? Can either Zuck or any government in the world ‘fix’ Facebook? As an industry, social media can be regulated. As a company, Facebook can be fined and controlled. But as an idea, as a part of the Internet, and as a trend, Facebook is more difficult to control. What needs to happen is that along with the threat of government sanctions, Facebook also needs internal pressure to restructure. That pressure will never come until golden boy is removed from the helm. It was only till Biz Stone and Jack were shown to be totally inept at handling twitter, that people understood that twitter needs some serious work. It’s a great feeling to follow an enigmatic or often just an esoteric leader and believe that they’re doing the right thing. But Facebook’s investors, specially those who care about the effects of the company on the world, should break through that spell and focus on forcing the company to rebuild.

Zuckerberg himself should realize that it is under his own helm that bad things have happened, and we’ve long given him a huge platform to grow and become a leader. But just like Rahul Gandhi, growing on the job is not possible for someone who controls the fate of a billion people. That just doesn’t work. He would be better off stepping away from the plate and letting someone else play while he rebuilds himself and finds out what he believes in beyond just the dominance of Facebook.

Automatic app updates out, this method in.

Automatic app updates are a bad idea. Apple should recognize this by now. In case you, dear reader, aren’t convinced of that, here are some simple reasons why automatic app updates are just no good –

  1. Software is buggy – how many times have you heard that “we shouldn’t get the dot zero version of that software”? It’s almost a maxim in the enterprise world – unless you deeply trust it to not break your current setup, don’t get that update. So why should we be so cavalier about software updates for our personal devices? We shouldn’t let developers decide the de facto time when we get an update.
  2. It’s a vehicle for disruption – and not the good kind. App updates are great if they’re well thought out, streamlined, and work. But more often than not, they introduce changes which wouldn’t sit well with you and your workflow. How many of us regret updating to some version of iOS that slowed down our devices to hell and there was no recourse? Why do we trust third party developers more than we trust Apple in this instance? If I don’t know exactly what is going to change in the update, why should I update it? Which leads me to the next point…
  3. Automatic app updates are evil – Yes, they’re evil. How many times has Facebook slipped in something nasty and you didn’t even know it till you got the update? There are two types of nasty Facebook has slipped into your devices over time – the first is when they change the user agreement. So often, we would go to the website and Facebook would make us check a box and hit Accept before letting us burst out our Likes and jealousy. We’ve all brushed past those to chat with our friends. The same applies to app updates. You open the app to answer the call of a notification and an annoying pop up tells you to just say YES before you can do what you came here to do. What option do you have other than to stab that yes button? The second nasty is the more insidious version – Facebook has been able to slip in all kinds of dirty code, tracking features, and nasty experiments into our apps simply by adopting frameworks that let them remotely update our apps, and by using vague release notes that just said “making some improvements”, even when they were shipping major changes to your Facebook and Instagram experiences. This must stop, and the easiest way to make them stop (even though we’re too far gone now thanks to their remote app update frameworks), is to stop automatic app updates.
  4. It’s bad for security – This goes against everything you’ve ever heard. “Automatically updating software is great! It keeps things secure!” Until, it doesn’t. Software is eating up our life and yet, pretty much all of us are rather careless about the security of our apps and services. For most technophobes, automatic app updates are both a boon, and an excuse to hide behind. “Hey, I keep my apps updated, but I still got hacked!” Well, did you consider 2FA? Did you try to understand whether you’re using insecure communication over insecure networks? Did your app have the requisite features to protect your privacy, like data encryption? Are you using the same password for fifty services? We would all be more knowledgeable about all those questions if we bothered to understand what goes on in the making of our apps, the design decisions taken by the devs, and the shortcuts they take to ship sooner. Which leads to the next point –
  5. It’s a surprise! – it feels great to open an app the first time in the day and notice that something has changed overnight, but more than once, I’ve been bitten by apps that changed their business models, removed features, and made decisions that affect me, without so much as bothering to explain that a change is coming. This attitude is a right that a developer feels about a piece of code that they’ve written, but it’s a piece of code that I licensed from them and is running on my machine. They should not be able to decide how that code changes for me. By removing automatic updates, we’re forcing developers to explain why we should be getting this new update, rather than letting them get away with “we removed bugs!” or the boilerplate crap big tech companies throw at us.

Until things change and developers become better documentation writers, and tech companies stop lying about the code they’re sneaking into our machines, I have one suggestion –

Don’t do automatic app updates. Do expiration-based ones instead.

Right now, automatic app updates are an all or nothing deal. You either trust Apple and third party devs completely, or your don’t. I fall in the latter category and I couldn’t be happier! I know that I’m gonna get exactly what I paid for an app (especially if it’s free), and it’s going to work exactly as I expect it to for a long time to come.

Well, almost. Apps often have massive API changes, or security updates that are absolutely essential. The only way for devs to push those through is to expire the version of app currently installed on your devices, and force you to update (when you open the app the next time, at the crucial moment when you actually need the app). I’ve seen a lot of important updates like this, like when my banks update their APIs, or my insurance firm tells me to get the update else I won’t get continued service, or my grocer decides that I can’t get to my weekly ‘one dollar off’ coupons until I get the latest and greatest app update they’ve pushed out.

OK, that last one is silly. Apps like my grocer and my insurance app should always work. If I’m in front of a cop who’s asking for my insurance info, it would suck if I have to tell her that I have to update my darn app before I can show it to her. Also, why the heck does my grocer need to update the app once a month? Haven’t they heard of APIs?

Situations like those cause me to propose the solution I’m presenting, though, it’s obvious that it should be taken with a pinch of salt, since it’s not the perfect solution.

Here’s what we should do –

Apps shouldn’t get auto-updated. Instead, this should be a deliberate process. We need to be able to approve everything that goes into our devices. Yet, some apps are essentials, and though I don’t open my insurance app every day, when I open it, I expect it to work instead of showing me a banner to update the app before I can continue. So those essential apps should have two options – either I let them auto update completely, or I let them update only when the app is marked as ‘expired’ by the developer. The benefit of the latter approach is that devs should have a legitimate reason, such as changing their API drastically, that should drive app updates. Does this put more strain on Apple’s app approval process? Yes. Let’s make them earn that 30% they take from the devs, and the hundreds of dollars of Apple tax they collect from us.

I’m not interested in the smaller updates. I’m interested in keeping my apps available when I need them. So if I can skip the small ones and only get the big, breaking news updates, I’ll be a happy camper.

But this may not suit everyone. Some people don’t care about how and what changes are coming to their devices, but that’s what got us into this mess before with Apple and the battery issue which Apple effectively cheated and lied to us about, and Facebook and every privacy scandal they’ve been able to walk away from.

I believe that if you want to remain that kind of person, you have the full right. So I would love to see all of these options incorporated into the next iOS, or the one after that. The future is customization and personalized feature sets for everyone. It’s more expensive due to that, but that’s just where we’re headed. Hopefully, we’ll get to enjoy some good software on the way.

A couple of things about the iPadOS.

To me, this is the most exciting consumer announcement at WWDC today.

Everything, from better copy/paste (that terrible tap UI be damned), to the new Apple ID based app sign-in (it’s been a long time coming), to the fact that you see footnotes on the iPadOS page for the first time at about 70% down the page (when they mention speed improvements, which are already a sore spot for Apple), tells me that Apple has finally accepted that the iPad is not just a ‘bigger iOS device’ but a thing in itself.

Some of the ideas they’re throwing at us are reminiscent of OS X jiggery-pokery (like Today widgets, and App Expose and app spaces), while others, like Apple Arcade (gaming subscription service; akin to Amazon FreeTime Unlimited) seem like good improvements that Apple needs to keep their services business growing.

Apple’s long road to merging Mac and iPad app development is on the cusp of breaking out, and their continuity and handoff features are getting better and better.

The best part was the range of iPads that this new OS supports, which is a good job, well done, Apple.

I realized recently, that we use our iPads horizontally almost exclusively, and Apple should ideally twist the Apple logo in the back by ninety degrees. Perhaps this software change is the first step to embracing this new mentality.

Notes on setting up Freedbin

Here are some notes on how to setup Rachel Sharp‘s Freedbin, which is a docker version of the popular Feedbin RSS feed reader.

I had some trouble setting this up on my Windows 10 machine. A lot of issues I faced had to do with setup and environmental variables. I don’t think I faced any real issues due to my host being Windows, other than the terrible thing that Windows 10 itself is. Anyways.

First of all, I had an already running version of postgres for other docker images, so there was a conflict I was not able to resolve, since Rachel’s docker compose file calls its images directly from Docker Hub which are not easily configurable. If someone can guide me to using the same postgres instance for two docker projects, that would be great! Right now, I have two docker containers running postgres.

So, (real) first of all, I downloaded the repo to my own machine to make modifications.

To begin, in the docker-compose.yml, I changed the name of the service from postgres to postgresfeedbin and changed the port to 5433 instead of the 5432 which was already in use.

I also changed the app image from rachsharp/feedbin to a local name freedbin_app and added the build line, so I could build the changes I’m putting in.

I added the restart unless-stopped line to ensure my containers never stop! 🙂

There’s a discussion on the github repo about replacing Postlight’s Mercury service with our own open source version of the same. Postlight has sunset their own servers, so it makes sense to use our own. One alternative is to use Feedbin’s own extract service, but that is available only in the newer version of Feedbin, which Rachel’s docker container doesn’t use. Instead, I already had a docker image of Mercury from the docker hub that I’ve setup for tt-rss and other projects, which I just connected to, using the MERCURY_HOST environment variable. In this setup, the MERCURY_API_KEY doesn’t do anything. Mercury just ignores it and it seems that so does Feedbin.

All of the above are summarized here, as part of the docker-compose.yml file –

app:
    # image: rachsharp/feedbin
    image: freedbin_app
    build: .
    restart: unless-stopped
    environment:
      - MERCURY_HOST=http://192.168.99.100:3000
      - MERCURY_API_KEY=abcd
      - SECRET_KEY_BASE=abcd
      - POSTGRES=postgresfeedbin
      - POSTGRES_USERNAME=feedbiner
      - POSTGRES_PASSWORD=feedbiner
      - PGPASSWORD=feedbin
      - DATABASE_URL=postgres://feedbiner:feedbiner@postgresfeedbin:5433/feedbin_production
[...]
  postgresfeedbin:
    image: postgres
    restart: unless-stopped
    command: -p 5433
    environment:
      - POSTGRES_USER=feedbiner
      - POSTGRES_PASSWORD=feedbiner
    ports:
      - 5433:5433
    expose:
      - 5433
    volumes:
      - postgres_data_feedbin:/var/lib/postgresql/data
volumes:
  redis_data:
  postgres_data_feedbin:

I further had to make changes to the startup_script.sh file as here –

if psql -h postgresfeedbin -p 5433 -U feedbin -lqt | cut -d \| -f 1 | grep -qw feedbin_production; then

As seen, I’ve just pointed it to the new service name and port.

At this point, the service was able to start. I was able to create an account and get in and add feeds. However, I follow a lot of feeds and importing an OPML file makes good sense for me. But, the import settings page was failing to import due to a failed AWS config. I looked up solutions and one way around is just to disable a connector called CarrierWave, which connects to AWS. Guess what gets disabled if you disable CarrierWave? The import/export page.

So, I went about creating an S3 bucket on AWS, getting credentials, and making the S3 bucket publicly accessible. I don’t know why this is the case. Perhaps if we use a newer version of Feedbin, these issues will not pop up, but in Rachel’s version, this is the case, so I went with it.

After I made my S3 bucket and got the AWS credentials, I added them to the Dockerfile as here. The variables are already there, just need to be filled up –

ENV FONT_STYLESHEET=https://fonts.googleapis.com/css?family=Crimson+Text|Domine|Fanwood+Text|Lora|Open+Sans RAILS_ENV=production RACK_ENV=production AWS_ACCESS_KEY_ID='my_key_id' AWS_S3_BUCKET='my_bucket_name' AWS_SECRET_ACCESS_KEY='sooooo_secret!' DEFAULT_URL_OPTIONS_HOST=http://localhost FEEDBIN_URL=http://localhost PUSH_URL=http://example.com RAILS_SERVE_STATIC_FILES=true

There’s one more catch. The Feedbin code uses its own version of CarrierWave called CarrierWave Direct, which defaults to try to use the ‘us-east-1’ region for AWS. If your bucket is there, you’re fine. Mine is in ‘us-west-1’, so I had to go into the /config/initializers/carrierwave.rb file and change the following to add my region –

config.fog_credentials = {
      provider: "AWS",
      aws_access_key_id: ENV["AWS_ACCESS_KEY_ID"],
      aws_secret_access_key: ENV["AWS_SECRET_ACCESS_KEY"],
      region: 'us-west-1',
}

Finally, I am ready to build and deploy. Running the following command –

docker-compose build

You’ll notice a new image in your docker images list –

$ docker images
REPOSITORY                    TAG                 IMAGE ID            CREATED             SIZE
freedbin_app                  latest              20a0334cd11c        30 minutes ago      1.27GB

and now you can deploy –

docker-compose up

It takes a while, as Rachel mentions somewhere, but all services come up perfectly, and I was able to import my OPML file. I noticed that the S3 bucket holds the lone OPML file, so perhaps it won’t cost me any money? Eventually, once I know that the import is done, I’ll go in and delete the bucket.

Big, big thanks to Rachel Sharp for creating Freedbin. It’s a great way to get started on Feedbin and while I was working on setting this up, I learnt how to use docker, created my first Docker container and uploaded my first project to Docker Hub. Hopefully, I’ll be able to build Freedbin from scratch using the latest Feedbin code and Feedbin’s extract service, and using the principles set down by Rachel.