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.

On the power of writing

I’ve been reading Susan Sontag’s Notes on “Camp” these past few weeks. I’ve really enjoyed slowly working my way through it, and taking down notes and interesting quotes from it. These are safely tucked away for now, but there was something interesting that happened, which I’d like to note –

Sontag starts off with –

Many things in the world have not been named; and many things, even if they have been named, have never been described. […]

A sensibility (as distinct from an idea) is one of the hardest things to talk about

Susan Sontag, Notes on “Camp”

When I started reading this essay, I had little idea of what Camp is. Since then, I’ve visited New York, been to the Met, and seen all the things that inspired these thoughts, and things around them.

But to me, writing is the greatest tool humans have ever conceived, and the mark of a great writer is that by the time they’re done telling you about their ideas, you believe them and adopt them.

This is my last note on the essay, made today –

I love this idea. So much has been written about our human history, but the color gets lost almost instantly. The sensibility which informs the era being written about is the most difficult thing to capture, and thus the most valuable thing.

Nitin Khanna

As soon as I wrote it down, I realized that I was echoing an idea I had read three weeks ago from these very pages. That I have wholly adopted the idea Sontag presented, and that it is a part of my thinking is a testament to how powerful a tool writing is.

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.

So true. My reading challenge has reached a slump. It’s not that I’m stuck on a book, it’s just that other things are getting in the way. Sometimes it’s all about reupping your commitment ?
#keepreading #readingchallenge #quote

A note on the Indian National Congress

The New York Times, reporting on Modi’s win in India –

What scion? Rahul Gandhi is a mediocre politician at best, and a terrible orator on most days. His gaffes at the mic and in front of the media are legendary. Videos of him screwing up basic general knowledge, though certainly well edited by the BJP and its paid media houses, shed light at how utterly incapable he is as a leader.

I’m as liberal as they come, and to me, it is a joke that the media pits Modi’s wins as the rise of nationalism vs the liberal left. It is not. It is a backlash against Congress, one of the most corrupt political parties in the world. In many ways, Modi’s victories are not just the BJP and Amit Shah’s doing. The ‘blame’ lies also on Congress’ own shoulders. Here are the reasons –

  1. The first mistake Congress has made is corruption. Decades of corruption scandals, unchecked fraud, unjailed politicians and business leaders, and unending investigations, have led the commoner to believe less and less in the party’s ability to lead us into the next century. In that backdrop, any leader who shows a spine would seem to be a better option, let alone someone with media savvy and a track record for economic growth.
  2. The next mistake is complacency. What change has Congress brought in itself, that voters would look to them with hope? The biggest joke is the idea of the politician working for the people (I don’t even want to address the ‘servant of the people’ idea), because that’s not what dynastic politics is about – it’s about serving oneself and one’s own future generations. At every step, Congress has done well for its own coffers, but less and less for the people. That is not to say that there has not been economic growth under Congress, but has been been due to, or despite? The current political climate in India is a response to that question.
  3. The most important mistake that Congress has made is that it is not a political party of India. It is the Gandhis’ political party in India. It is a personal club that every Gandhi automatically has entry into. This is wrong. If Congress wants to become relevant again at the national stage, it needs to come out of the shadow of its current leaders and let new voices be heard. The definition of letting the youth take reins is not the let the next Gandhi in line become your new lynchpin.

I’ve called before for the removal of Mark Zuckerberg as CEO of Facebook. Regardless of who has been responsible of the many, many security and privacy blunders by Facebook over the years, the person most responsible for them, the one who set company culture, who oversaw the main aspects of how Facebook makes money, is Zuckerberg. Letting him go will let Facebook focus on what is important – building a platform people want to come to. Right now, Facebook is mired in infighting, theatrics, and a faltering ethical compass that is not helped by Zuckerberg’s total domination over the platforms he runs.

The same is true for Rahul Gandhi. Far from being a charismatic leader or an adept politician, Gandhi is a no-name entity in Indian politics, bound to keep making the same mistakes or worse, that have so marked Congress’ recent history in India. Why should the people not demand his and all other Gandhis’ removal from the party, so that it can reboot, refresh, and move forward?

The Indian democracy is still young, and can afford to make some mistakes. But letting the Gandhis maintain control over Congress is not just a small mistake. It weakens the largest democracy in the world by beholding an entire national entity to the whims of a few inept politicians. The path from being the largest democracy to the greatest one lies through a few important sacrifices.

Let’s make sure that we hold Congress responsible for their choices, so that India as a country can make better ones.

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.

A comment about bringing quiet into your life

there is no benefit to delaying a bad feeling

A quiet environment is a sign of success | Penelope Trunk Careers

As said right in the next paragraph, our instinct is to delay a terrible thing that is about to happen. But is it worth it? No. It’s better to deal with it now and get it over with, so you can have peace of mind instead of worrying about it at the back of your mind.

Interesting, short read. Go check it out.

Words Matter in Interfaces

Visual design is powerful, but the words are what people quote to one another.

And they are the only part of the design that survives across time and media types. They can be held intact in a human mind.

Erika Hall

Source

As soon as I read this quote on Joshua’s blog, I thought about my reluctance to use Snapchat. I once had a conversation with someone who is an ardent user of the social network and after explaining a few basics of the app to me, he grew weary of my inane questions and simply said, “if you’d been with the app since the beginning, this would not feel weird to you.”

Indeed, I see it as this – visual design needs a lot of historical context to understand. If you’ve seen it evolve over time, you can understand it well. But if you are dropped into it anew, it’s all strange and confusing to you. A new user might even be scared of clicking things, if they have no idea what they’re doing.

I love playing a game called Egg, Inc. For the first few months of playing the game, I would notice these cute little drones flying around. I thought they’re just an easter egg by the developer. Unrelated, I would notice that at random times, my resources would shoot up, by random values which made no sense to me.

While reading a post on reddit one time, I discovered that you’re supposed to smack those drones out of the air. See, in the game, you’re running a chicken farm, and you believe those drones are a violation of your space, so you can shoot them down, for a reward. Sometimes, fast moving drones appear and shooting them down is difficult but awards you with an exponential value. All of this would be in the onboarding, but I can never recall there being a specific time when I was told to hit the drones. In a way, that is an easter egg – you’re supposed to discovered on your own that those cute flying objects are actually an annoyance to your character and shooting them is the right thing to do. But I felt betrayed. How many months had I wasted not knowing about this growth hack?

I can’t expect a game of all things to label everything. The elegant interface of Egg, Inc, would only be made more clunky by the addition of ugly labels. But I can expect this from Snapchat. Their job is to make it easy for me to use their interface, specially if I’m a new user.

An interface made up entirely of swipes is revolutionary, but a hindrance to people who have not understood it from the beginning. The same is true for all visual design, and it’s worth remembering for everyone who is involved in the task of designing interfaces.

n.b. Notice how quickly Erika’s ideas were attacked by someone who puts more value in visual design than textual context. I would have expected people to have differing opinions about the topic, but one opinion doesn’t invalidate another. It’s an opinion, not a fact.

My wife asked me the other day – why do you use twitter? Isn’t it full of bile and anger? This is why. Great ideas are often posted to it, and inquisitive minds go where the water of knowledge is.