Rework

I have been a fan of 37Signals since I can remember — I used to use prototype.js, learnt Rails for freelance work, and made everything I worked on look like Basecamp. But, when their book released I assumed it won’t be available in India (it was), or that it would be too expensive to buy anyway (it wasn’t).

So, when on a recent visit to the GrandWorks office I saw it lying on Sid’s desk, I borrowed it and read it in a single sitting. Here are my highlights:

Sacrifice some of your darlings for the greater good. Cut your ambition in half. You’re better off with a kick-ass half than a half-assed whole.

When something succeeds, you know what worked-and you can do it again. And the next time, you’ll probably do it even better. Failure is not a prerequisite for success… Success is the experience that actually counts.

The problem with abstractions (like reports and documents) is that they create illusions of agreement. A hundred people can read the same words, but in their heads, they’re imagining a hundred different things.

Their approach to planning is one that I have recently adopted in my daily life, especially my side projects:

When you turn guesses into plans, you enter a danger zone. Plans let the past drive the future. They put blinders on you… Plans are inconsistent with improvisation… Working without a plan may seem scary. But blindly following a plan that has no relationship with reality is even scarier.

Mass is increased by: permanent decisions, inventory (physical and mental) long-term road maps… less mass means you’ll be able to change direction easily. The more expensive it is to make a change, the less likely you are to make it.

Don’t make up problems you don’t have yet…the decisions you make today don’t need to last forever. Decisions are temporary. Optimize for now and worry about the future later.

This year, I have been trying to be more proactive at sharing my work. The ideas in this book, and Show Your Work have greatly influenced how I think about it:

Everything has a by-product. Observant and creative minds spot these by-products and see opportunities.

So build an audience. Speak, write, blog, tweet, make videos – whatever. Share information that is valuable and you’ll slowly but surely build a loyal audience. Then when you need to get the word out, the right people will already be listening.

Instead of trying to outspend, outsell, or outsponsor competitors, try to out-teach them… Teach and you’ll form a bond you just don’t get from traditional marketing tactics… They’ll trust and respect you more.

Don’t be afraid to show your flaws. Imperfections are real and people respond to real. It’s why we like flowers that wilt, not plastic ones.

Don’t be afraid to give a little away for free – as long as you’ve got something else to sell. Be confident in what you’re offering.

Even though I’ve been late in both reading and writing about the book, it couldn’t have been at a better time — 37Signals recently announced their new book It Doesn’t Have To Be Crazy at Work. Looking forward to reading it when it releases in India!

Docker Compose for local WordPress development

Docker, specifically Docker compose, has served me well in keeping a sane development environment for my WordPress projects. MAMP was too much of a black box, and having a local PHP and SQL for both MediaWiki and WordPress was going to be more maintenance than I would have time for. With compose I have little to no maintenance burden, and my system is squeaky clean.

The following docker-compose.yml file starts two services — using the mysql, and the wordpress images:

The way this is setup is that both the services share a part of their file system with the host. The mysql one shares all the database data, making it easier for me to move test data around different instances and configurations of WordPress that I might be running. And, to be able to work on plugins and themes the wordpress service shares the wp-content directory. This way, I can easily clone and work on anything directly on my local system.

With this, all I need to do now to setup a new WordPress install is — create a new directory, copy this YAML file into it, and run docker-compose up. I change the wordpress service’s port mapping when I need to run multiple instances at once. That’s it!

Indian Government and Politics

I didn’t pay attention to Civics class in school, so it was time I revisited the syllabus and found out how the Indian government worked. This interest was triggered by the Aadhaar case, and also by my attempt to understand where the ISRO WikiProject lies in the larger Indian government system.

I decided to get Indian Government and Politics from SAGE publishing because I read somewhere that it was a textbook for UPSC exams (of which I learnt more in the book). I supplemented my reading with an entertaining YouTube series called Consti-tuition hosted by Meghnad. I even got a subscription to Newslaundry to access the bonus content.

The video series and the book covered what the constitution said, and what reality is like. This was important for me as it helped me learn where the system fails and what kind of structures are made ad-hoc to deal with it. As Dan Kaminsky points out, this part of my learning will go on for much longer, maybe forever.

It also gave me a lot of new WikiData projects ideas. The first one being to visualize the national political parties and their ideologies. I’ll be working on more as time permits. Click image below for the Wikidata query.

This book was a good first step to learn the system and it’s lies. It seems pretty complex, and I know I’ve only scratched the surface, but at least I’ve begun to understand something… the me in school would have understood nothing, even if he did pay attention.

A Wikiseum

After I understood how Wikidata worked and had begun contributing to it, I thought it was the solution to everything. It made complete sense — a federated, linked, semantic database of everything. What else would anyone need? It would be the hammer for every nail.

Excited, I began showing it to my friends and family. With each demo, I realized that Wikidata is a difficult hammer to use. A friend pointed out the obvious, “Interesting… but how will people use it? No one is going to learn SPARQL”. Even changing the name of the painter in the “show me paintings of Amrita Sher-Gil query isn’t trivial. And working with Wikidata’s Q-id isn’t straightforward either.

The only other way to query this immense dataset is to wait for the big tech companies to eat up all this CC-O data. Siri, Alexa, and Google Assistant will become smarter with it, but they’ll remain a closed ecosystem that often harm the projects they benefit from. On the other hand however, the Google Art Project has helped Commons. Still, it too remains a system of closed collection and curation, with no room for correction or contribution.

While we wait for an open source Virtual Interactive Kinetic Intelligence (VIKI), I wonder what an open virtual museum would be like — a Wikiseum! A VR experience on the open web using open data. Paintings from museums across the world, and a museum guide who speaks your language.

All this is technologically already possible — Wikidata has numerous statements on paintings and museums which is only going to increase with structured data on Commons. Commons itself has scans of many paintings, and Wikipedia has detailed information about paintings, their artists, and the museums they are in.

All that is left to do is some plumbing and a UI.

Silence of dusk — broken,
the pao wala reminds us:
we must eat tomorrow,
like we did yesterday.

Silence of noon — broken,
the kabari wala reminds us:
we’ve been hoarding trash,
like we did last week.

Silent. We are the same.

Maus

I read Maus in two sittings when I was alone at home in January. If I had known that the book was about the Holocaust, and that the main character, Mr Spiegelman, would remind me so much of my Dadi, I would have avoided reading it.

I secretly laughed at Dadi’s need for order, and perfection. And not just any order, but one of her design.

I got irritated when she accumulated trash and treated it like treasure.

I felt scared when she had one of her restless nights, not able to lie down nor sit up, only feeling better after Papa put a nitroglycerin patch.

And I cried when she told me how much she still missed Baba.

Even though I have the second part of the book, I am not going to be reading it for a long time. I miss Dadi.

Writing about reading about writing

Lately, I’ve been reading a lot about writing, and so, just to make this clever sentence, I must do some writing about my reading.

It must’ve been something I saw on television in my childhood that made me think that writing is done when inspiration strikes and words just flow. The image in my head was of an author writing an entire story, in longhand, in one sitting. This has never been the case with me.

Words, for me, have never flowed. They have never even accidentally leaked. Even when I invited them they didn’t come. In my head they all responded yes, but on paper, they didn’t show. I called them up and reminded them of the great time we had last weekend (we didn’t); they made excuses. I promised to make food they like; they pretended to have tummy issues. After a few tries, I thought to myself that they just don’t want to be friends, and left it at that.

But now, after constant advice from Pooja, Rhea, Amber and reading a few books, I am happy to realize that this isn’t the case. Making an outline, writing a rough draft, re-writing, editing, and endlessly repeating, is what writing is about. That, and tricking you into reading about writing about my reading.

WordPress meet-up, December 2017

Siddharth has been organizing WordPress meet-ups in Goa for the last three years. Unfortunately, I am often not in the city to attend them. So, this time, to ensure that I am there, I offered to help him organize it.

Both of us have recently joined a co-working place, 91Springboard, and they offered to host the event. Hampus made us a logo, complete with coconut trees, a Portuguese style house, and a fish thali! Sid wanted circular transparent stickers which we got printed from Midway.

Along with the informal meeting, we decided to have two short talks. The first by Abhishek about Open Source, and the second by me about Gutenberg. This was really an excuse for me to explore WordPress’ new editor.

On the day of the meet-up, we were a bit disappointed with the turnout. Of the 40 people who RSVP’d on meetup.com, only 15 came. We started the talks at 6:15 pm and in an hour both were done. What followed was a lively discussion about the future of WordPress, the nuances of theme licensing, and the standard of government websites. Later, everyone went to Joseph’s to get a drink, but I got sleepy soon after and left for home. What had started with disappointment turned into the realization that the people who did come were the perfect ones.

WordPress Goa, Prateek talking

For next time, we need to remember to start a little late, 5:00 pm on a Friday is too early. We also need to try and get the word out to students. If you would like to attend, talk, or have any suggestions, do get in touch.

On Writing Well

A half read ebook doesn’t clutter your bedside table. Instead, it buries itself under an icon. A 42-by-42px icon, of an obscure app, on a broken phone, which will never be taken for repair.

Fortunately, my copy of On Writing Well by William Zinsser escaped this fate. I was reminded that I was reading it while scrolling through old blog posts. I was also reminded that I used to blog about books. These reminders ended my search for an open, sync-able, and cross-platform annotation solution. I have struggled to accept WhisperSync and struggled to implement OpenAnnotations, I just want a simple and easy alternative.

So, for now, I will have a single blog post for a book, with all highlights, and notes, using the Web Annotations markup standards. I didn’t make notes while reading this book so these are my highlights:

Unity is the anchor of good writing. So, first, get your unities straight…unity of pronoun…unity of tense…unity of mood…

I don’t like plurals; they weaken writing because they are less specific than the singular, less easy to visualize.

The above quote was in the particular context of gendered pronouns (he/she/they), but I am noting it as general advice.

We are a culture that worships the winning result: the league championship, the high test score. Coaches are paid to win, teachers are valued for getting students into the best colleges. Less glamorous gains made along the way—learning, wisdom, growth, confidence, dealing with failure—aren’t given the same respect because they can’t be given a grade.

All your clear and pleasing sentences will fall apart if you don’t keep remembering that writing is linear and sequential, that logic is the glue that holds it together, that tension must be maintained from one sentence to the next and from one paragraph to the next and from one section to the next, and that narrative—good old-fashioned storytelling—is what should pull your readers along without their noticing the tug. The only thing they should notice is that you have made a sensible plan for your journey.

I ask myself one very helpful question: “What is the piece really about?” (Not just “What is the piece about?”)

When we say we like the style of certain writers, what we mean is that we like their personality as they express it on paper.

We know that verbs have more vigor than nouns, that active verbs are better than passive verbs, that short words and sentences are easier to read than long ones, that concrete details are easier to process that vague abstractions.

Organizing Wikidata WikiProjects

TL;DR: Notes on how I’ve been organizing pages for my Wikidata WikiProjects. These are for my future self but could benefit others too. Suggestions welcome!

NOTE: This is about topic related projects, community WikiProjects like WikiProject India would have different needs.

In the last six months, I have created three Wikidata Wikiprojects with different sizes, depth, and completeness. After rounds of trial and error, I have learned of useful Templates and ways of organizing these pages. Having a good WikiProject page is like having good code documentation, it helps me remember what I wanted to do even when I come back after a month of being inactive. Here are my building blocks:

Introduction

Explain the domain of the project using the P and Q templates. If there are sub-pages with tables (more on this later) I try to list them here, but I am not yet sure if this is a good idea. See the intro section of the CJI project for an example.

Queries

Hoping the reader scrolls at least to the second section, I put up queries and visualizations to create some interest. Using the SPARQL template I show the main query of the project, collecting all the entities of the project’s domain. I use Cot and Cob for all subsequent queries so that they don’t take up too much vertical space.

I try to set an interesting defaultView for the queries so that people can visualize the data, but I haven’t used images, screenshots, or interactive charts yet. Those would surely get more attention, but images will go out of date, and I still haven’t learned Vega. Should explore SparqlCharts too.

Properties

While the first two sections are for people visiting your project, the next sections are for those doing the work. The properties section should define all the details you want to add to the entities. If there are too many, you might want to break them down to Core and Extras to ease the workload.

It took me a while to learn and understand the features of List of Properties/Row. Customize the table using description, example-subject, example-property arguments. I used the contextualized-qualifier for the first time in the core properties of the CJI project.

Data table and sub-page

A table of all the entities and properties of the project is useful in doing and monitoring the work. I prefer to keep it on a sub-page as its usually too large for the project page. See Delhi Metro/Stations for an example.

The Wikidata list template gives you a table based on a SPARQL query that gets updated by a bot every day. This has been very helpful for me, I watchlist the page with this table and I get an update if any property of any object that I care about has changed, whether or not it was direct, and whether or not that object itself is on my watchlist. The template also lets you see labels in multiple languages, but unfortunately not descriptions.

Resources, scratchpad & questions

At the end, I have miscellaneous sections to document helpful resources, questions, ideas, or anything else that doesn’t have a place. Often bullet points here become properties to be added, or citations used on the objects.


In the case of WikiProject Delhi Metro, which is the largest WikiProject out of the three I also have a section to help get contributors started, and a userbox too.

For both Delhi Metro and ISRO I have sections for broad topics like launch vehicles or stations, and sections for queries, properties, and resources within them.

He came by bus from Margao,
no he isn’t from Margao.
Someone on a bike
dropped him from Quepem.

He came by bus from Margao.
Just for this?
When I was younger,
maybe I would have too.

He came by bus from Margao,
I dropped him to Porvorim.
Someone on a bike
came to pick him up.

He said his aunt used to live
near where I live now.