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!