Two new talks I gave recently. The first was as a guest speaker at an AWS 101 conference:
And the second one was one of my better talks on how to use some freely available tools for quick startup validation:
Two new talks I gave recently. The first was as a guest speaker at an AWS 101 conference:
And the second one was one of my better talks on how to use some freely available tools for quick startup validation:
This is a talk that I gave at an event organised by the Department of Technical Education in Thiruvananthapuram a couple of days ago. The audience was campus placement officers, and it was interesting talking to them about campus hiring & letting them know the startup viewpoint.
(Photo by Ken Banks)
A startup job interview isn’t too different from that of a bigger company, so a lot of the tips you’ll find around the Internet apply without reservations. Startups however have a different culture, and focus on the combo of individual productivity and team fit a lot more than on processes and guidelines. Here’s a few pointers I’ve noted in candidates who have aced interviews at MobME:
Be comfortably dressed & not too formal. Inspired by the Google formula of “You don’t have to wear a suit to be serious”, most startups dress down. Wear a comfortable shirt, and perhaps put on some pants or a dress skirt, but even a jeans and T-Shirt is A-OK. This is not a license to come unwashed, unkempt or in mini-skirts though: most great startups ask their employees to look smart.
Open the conversation with smiles, be affable and open in your responses. Most good startups have a Don’t be an Asshole policy & tools to detect this early and often. When working in a close-knit team, it’s better to be around positive people who contribute than around energy drainers. Note that when I explain this to some people, they take it as an insult & a bias against introverts. Introverts are some of the best people on earth (and some of the greatest programmers), but you can be quiet and unassuming, and yet pleasant and positive.
Be confident. A better word would be assertive. Talk in short, brisk sentences. Communicate precisely. Try not to uhm and aah instead think a bit before speaking. Ask for clarifications when you don’t understand the question. When you don’t know stuff, just say that you don’t. Don’t ramble & distract the attention of the questioner away into areas that you have expertise in. If you have confidence in your skills, that really comes across, and it’s the biggest “gut factor” when I hire folks.
Brush up on what they seem to be looking for. This is a no-brainer, but most often even when you are good, you don’t get hired because it’s been a long while since you worked with the stack. It’s okay to explain that you’ll need a few weeks on the job to get up-to-speed, but it’s better to brush up before going in. Most startups hire immediately and don’t have scheduled yearly hiring rounds.
Stress that you are a generalist. Ideally, you should be. Startups value specialists when they are consultants. When you’re on the team, you are expected to pitch in everywhere required. A small team that follows an Agile development model like SCRUM always will have slack for non-core contributors to pitch in. Show them a broad spectrum of expertise.
Show them code that you’ve written. For a programming interview, this is a must. Ideally you have some uploaded to GitHub already. If not, start contributing to open source today. It isn’t as hard as you think and there are events dedicated to lesser-represented groups.
Understand the question before answering. This is such a common problem that I’ve put it in a separate bullet point. Wait for the interviewer to complete the question before starting up. When needed, ask for clarifications, and make sure you understand the question properly. Don’t shoot from the hip.
Don’t appear too eager to get the job. Be interested and earnest but don’t compromise too much for e.g if you have a target salary.
Show an interest in their business. This is last, but this is perhaps the most overlooked and most important bit. Ask them questions about how the company is run, what the team size will be, ask if you can meet the team, et. al. Remember that an interview always goes both ways. At MobME, we’ve asked a few people who were interested but didn’t seem qualified enough to apply for an internship.
This was adapted from a mail I sent to a past colleague who is looking for a new job. Pitch in below if you have more tips!
I picked up my reading habit from my mum. I read everything from Sheldon, Christie, King and the like to Yeats, Whitman, Neruda, Donne, Dickens, et. al. It sure helped that mum had a huge library of her favourites (yes, that’s the picture above) and I read most of them twice over before I left school.
It was also in school that I started to write myself. When you’re an amateur author at that age, you really like having somebody read your work. These other people more often that not turn out to be amateur authors themselves, and then of course there’s a quid pro quo. That’s how I started started to read unpublished writing, and while over the years I’ve lost the muse, I still read a ton.
When I say this to other readers, they often look at me mystified. Amateur writing, seriously? Is that like fan fiction? Where do I get to read them? Don’t most of them require a spell check & a good editor? To the last: well, yes. But amateur writing is in an electronic format, and that brings about with it some unusual advantages. Let’s banish the negatives from our mind, and take a look at the upside:
Having said that, the proof of the pudding is in the reading: these are five good stories written by unpublished authors that I’ve read over the years:
Delenda Est: a Harry Potter and Bellatrix Lestrange (!?) alternate timeline story, an incredible pairing that somehow Lord Silvere manages to turn into an amazing story. Lots of plucky Bella here. This could have the Bella all of you panted over.
The Book: a mind control story: what happens when a middle-aged guy picks up a book that has symbols in it that gives him the power to control other people’s minds? Blackie weaves a tale that has the usual vagaries that come with mind-control, but also a surprisingly intelligent & coherent story behind it.
The Adventures of Me and Martha Jane: probably one of the books that has influenced me the most with its ideas of love, longing and blurred relationships, SJR’s Martha will stay with me forever. Forget the warnings on the page and dig through the story, worth it.
HPMOR: who says Harry Potter has to be irrational? LONG, good Harry Potter fan-fiction.
Sennadar: this should have been published. It’s as good, or if not better than a lot of what goes for fantasy now. A classic coming-of-age fantasy novel, but with a were-cat twist.
And that’s just the tip of the iceberg. I’m both excited & worried about the future of amateur writing. Excited, because efforts such as Amazon’s Kindle platform have provided a level playing field for a lot of budding writers out there. And worried because while the platform is egalitarian, it’s also commercial, which means a ton of potential authors will write stories in genres that are more popular & more acceptable. Amateur fiction until now has never been about making money, it’s about an author slogging away at a computer somewhere writing something that just needs to be written. But maybe that’s just the old-man in me speaking. There has never been such a time where there’s been such a low distinction between a “published” author and an amateur one. That, in my books, can only be a good thing.
A big loss as a movie enthusiast was that when I was growing up, the Malayalam movie industry was in a formulaic rut. While local movies still used to bag critical awards, most “popular” & “commercial” films casted Mammooty, Mohanlal (please don’t click that link) or other A-list stars and had the usual Dhamaka Dishoom fare. The movie revolved around the actor, who always had labels that were prefixed with Super, Mega, Ultra & so on, and the films resembled caricatures of superhero movies.
It’s only much later & very recently, when Uma & her friends introduced me to an older generation of movies that I… simply lost my breath. Padmarajan & his colleagues’ movies were stunning in its breath & simplicity and casted real people who portrayed everyday situations but in a fashion that elevated the craft to art. These movies didn’t shy away from controversial topics: pre-marital sex, rape (not the dastardly erotic treatment of it that came later, but a serious examination), family trouble, relationships that didn’t have labels, what not. Even if you don’t understand Malayalam, I urge you if you are a movie enthusiast to watch subtitled versions of some of Padmarajan’s classics: perhaps Thoovanathumbikal (Dragonflies in the Rain), or Namukku Parkkan Munthiri Thoppukal (Vineyards for Us to Live). And this in the 80s! What happened to Malayalam cinema in the 90s, in contrast, can only be described by one word: tragedy.
What I see now, perhaps starting 2010, is a revival. Talented new directors have emerged who have broken the deadlock an older generation of actors had on the industry. Perhaps, more importantly, there have been several good movies, and dare I say, a few great ones. These directors are courageous as well, and have tackled contemporary topics head on: 22FK was the first movie that I saw in a Kerala theatre where a female lead received a standing ovation (regardless of its contentious conclusion, the movie can’t be faulted for not having courage); other movies such as Manjadikuru & Philips and the Monkey Pen give a serious treatment to a previously unexplored genre.
I’m cautiously optimistic about this “new wave” of Malayalam cinema, more so because unlike Padmarajan and his coterie, there seems to be a broader cross-section of directors, producers and artists this time around:
Instead of more reviews & critiques, let me leave you with a list of movies you can watch yourselves & decide. Here’s to a great future for Mallu cinema!
[For people in Hindi-land who are reading this and becoming bewildered, yes, there’s a better movie industry outside Bollywood, and no, for a lot of us Indian cinema doesn’t revolve around SRKs, ABs, PCs and their tribe. This is your opportunity to upgrade to a better experience, take it!]
Yesterday at WWDC, Apple unveiled a mission statement that reads more like a poem. There’s a wonderful video as well, but just look at these words:
If everyone is busy making everything
how can anyone perfect anything?
we start to confuse convenience with joy
abundance with choice.
designing something requires
the first thing we ask is
what do we want people to feel?
then we begin to craft around our intention
it takes time…
there are a thousand no’s
for every yes.
we start over.
until every thing we touch
enhances each life it touches
only then do we sign our work:
Designed by Apple in California.
It’s a wonderful & sincere expression of why we need Apple to exist. And why I love this company so much. I’m beginning to think that the Apple under Jony Ive & Tim Cook might become far better than under Jobs.
Apple has FaceTime, and it has been very successful in introducing simple video calling to a ton of Apple users. That success—as Apple’s usually are—can be attributed to clear directed marketing and unparalleled ease of use. If the person on the other end of the line has an Apple device too, the only thing you need to do is press a FaceTime button and then seconds later, be talking to them via a video call.
I know a friend of mine who was super surprised when he pressed the button and it worked first time. He expected more of a setup process, perhaps creating an account or entering user credentials. Or heck, maybe being taken through a wizard. It’s the same user flow with their SMS counterpart—iMessage: you text a person and if the other end is an Apple device, the text is delivered via the iMessage IP network. It’s not just Apple who is doing this of course: a classic example is iMessage’s cross-platform and much more successful rival: Whatsapp. If you have anybody’s mobile number and if they have Whatsapp installed, you can text them. Works amazingly well!
So with FaceTime, Apple has video over IP. With iMessage, they have a simple texting solution over IP. What if Apple makes a dead-simple, works over the same mobile number, voice calling service?
First off: some historic background:
In short, in a span of less than six years, Apple has steadily worked to decrease the control carriers had over mobile phone user experience. It has reduced the importance of core apps (text messaging), and provided a better experience for premium apps (video calling, mobile internet, apps, et. al.). What if the next milestone is to do to voice what it did to video and texting?
Let’s explore another tangent. Why is Apple best placed to do this first? Android for example looks on the surface like a much better candidate. Android is an open environment and there are tons of apps that provide deep hooks into the platform to provide free (or close to free) Voice over IP. Tango is a great example of such an app. There are several reasons:
What is the bare minimum experience that Apple needs to provide to make VoiceTime a success?
The third is the most technically intractable problem. But like every open problem, somebody more intelligent has probably thought of solutions. In this case, IEEE 802.21, specifically describes this problem. And several workable solutions.
Why hasn’t anybody done this yet? Simply because mobile operators don’t want to lose the last bastion of money making they have. In India, despite have the lowest call rates in the world, voice calls contribute the most to subscriber ARPU. Nobody is looking for a blue ocean strategy when their existing business is doing just fine, thank you!
But why do you, as a subscriber want VoiceTime or an equivalent solution? There are so many reasons:
Would you be willing to pay Apple for such a technology? Let’s say Apple charged something like $10 a year for VoiceTime & let carriers have 70% of it (Voice is just another app of course), would you pay?
Literate Coffeescript is sweet. It’s a great implementation of something that I’ve always thought is fundamental to good programming: we write code for ourselves and other humans, not for a computer. We’re no longer dealing with slow-as-molasses computers that demand efficiency, but we have a lot of additional complexity to handle, a ton of language feature creep, concurrency nightmares and multiple service architectures. By making explanation the fundamental purpose of a programming language and giving it first-class status—and equally important—running indented code seemingly as an afterthought, Literate Coffeescript gives importance where it’s due. Think before you code, write down what your intent is. And make programming seem a lot more like crystal clear writing.
I think it’s popular now to criticise Apple, and particularly Macs, but there’s one simple reason that I switched to Macs and have been using them ever since:
I was tired of spending time on my computer working on my operating system instead of working on my projects.
Do read: 25 Years to Mac – How Ubuntu Pushed Me Away from the PC. I do go back to Ubuntu every now and then in Virtual Machines, but it doesn’t come close. And Windows is not *nix, so that’s never an option.
I think what Google should have done was build their own version of Linux, just like they built Android inspired from iOS. I bet lots and lots of folks would have paid money for a stable, usable, friendly & Googley Linux. And stuff like their Pixel laptop could’ve done more than just run a browser.
There’s always a tradeoff between time, money and quality in software development. More often that not nowadays, product managers are asked to deliver excellent products on a tight schedule and on a budget. Agile processes and the trendy idea of the minimum viable product only confuse things further because they seem to prioritise quick iterative development and a tight rein on features. How does one build a good product on time and keeping startup thriftiness in mind? I have six clear steps for you to follow:
One: Before building anything, dig to the roots and find product goals. Ask your client (or yourself) “Why do you need this product built?”. Answers like “We need to run a twitter campaign” or “We want a CRM for our sales team” are not clear enough. “We need to run a twitter campaign to promote our new startup” & “We need a CRM that tracks and updates senior managers about daily sales” are better answers, but ideally what you’ll dig for and get is the true reason behind the product’s existence. For the twitter campaign, it could be “reaching out to potential customers who are likely to purchase our startup’s product”. For the CRM, it could be “improving sales performance and making our sales team more accountable”. You are digging for goals—the why—not features—the what—that comes later, and that’s less important.
Two: Minimum viable product is a great idea. But when choosing what to whet down, keep the goals in mind. I have little patience for managers who come back and tell me, “But isn’t this what we decided to build?”. If you can’t deliver what your clients need, then you aren’t doing a good job. Keep product goals in mind, and prioritise features that will provide the most bang for the buck. Only then will Agile and MVP work well for you.
Three: Find great developers. What’s more important than your process are people. Great developers can manage themselves, figure out their own deadlines and do a lot more than a mediocre developer. Give them great tools too: a good working space, the editor that they want, and their operating system of choice. It’s also much better when you have a good team to split work into spheres of responsibility rather than into discrete chunks where many developers work on the same piece of code. Adopt practices like pair programming & SCRUM and promote discussion within the group. If at all possible, guide every discussion to a consensus and make sure every developer is aware of potential tradeoffs.
Four: Try as much as possible to not build engineering debt. This is easier said than done, but few rules go a long way: adopt a good source control system and practices, a development, staging and production deployment for every product, a continuous integration and deployment server, and have a system in place to code-review every commit before it gets merged back into the main tree. Make your developers police each other.
Five: Have an independent team to do security audits & quality assurance. This is a “manual testing” team, and while they might use several different tools, their mandate is to make sure the product has the features necessary, doesn’t have bugs, and is secure from a security standpoint. This team can be external to the company as well, but it needs to build a good rapport with the engineering division so that they don’t work at odds.
Six: Have regular deployments or sprints. Nothing focuses a developer more than a predictable schedule of deployment. Divide chunks of work into sprints and have staging deployments between them. Make sure that developers are responsible for successful deployments and pour woe to the person who breaks the build.
Well, those are the rules. Sticking to them is hard, and at times impossible, but my experience is that any deviation has always resulted in a loss of quality. While that might be acceptable in the short-term, in the long-term, it always comes to bite you on your ass. However, being a product manager is one of the best jobs out there! Figuring out the nitty gritty details of product construction, overcoming obstacles, finding consensus within the team and outside, and finally, building a product that meets the requirement is a very rewarding job. I’ve done a few stints here at MobME building good products and I’ve loved every challenge.
Update: I’ve started a Github repo that has completed assignments.
I’ve mentioned this before countless times to friends: the Stanford course on iOS Development is really mind-blowing. It’s the best way to learn iOS and Objective-C: Paul Hegarty is a wonderful teacher, the content & density of the slides is excellent and the complex Cocoa Touch framework and the Xcode 4 development environment is brought out very well through hands-on coding sessions.
Just to take one example, take a look at this slide above detailing MVC in iOS. I can point out dozens of developers who wouldn’t have this condensed understanding even after months with the ecosystem. In this small slide, you have:
And this is just one slide in the introductory lecture. It’s a wonderful time to be a self-taught app developer. The Stanford course is right now ongoing and lectures are being updated on iTunes U. There’s a Piazza discussion forum as well for the course.
So I recently got a bunch of calls from an NGO calling itself Relief India Trust. The calls themselves were a bit odd and over zealous with the volunteers flinging themselves at me and describing the plight of children in gory detail, but it was the frequency of the calls that first gave me a clue that something wasn’t right. Then, when I finally decide to put in some money, there’s a volunteer who calls me up, takes me through the donation process and then offers to stay on line until I give her a Transaction ID for the bank transfer.
I did up a Google search and found tons of consumer complaints about the organisation. And if you notice their NGO registration number in the link above, it’s just a plain four digit number: 3696. The Indian Government has an NGO search site where you can search for voluntary organisations by name or their unique registration ID. 3696 doesn’t turn up Relief India Trust. Neither does a search for their name. These are a bunch of scam artists.
Real NGOs probably needn’t be this aggressive. I donate every year to SOS Children’s Village India, which has been my charity of choice since forever. They have a unique take on bringing up disadvantaged children, a personal dialogue (if you wish it) between your kid and you, and I’ve visited their centre in Kerala too.
Update: I’ve receive a legal notice from Relief India Trust. Further developments in a new blog post: Relief India Trust, the Scam NGO, Files a Legal Notice Against my Blog Post for Defamation
Silver Linings Playbook is a really good movie. I’m a complete sucker for good romantic flicks, so this was no surprise, but the story around two psychotic folks finding each other was well done. It could’ve been better slightly, a little bit more edgier perhaps, but it’s still really good. And oh, Jennifer Lawrence is hawt!
So it needn’t be said that IRCTC is sluggish at the best of times and at the worst, darn unusable. Is it because of astronomical load? Bandwidth issues? Technology mismanagement? Resource exhaustion? Let’s take a look and try to guess.
This news article from July 2012 mentions that IRCTC did 4.47 lakh bookings in a day. Doubling that figure to get current estimates makes it 10 lakh bookings a day. To get the number of folks accessing the site trying to reserve tickets, let’s multiply that figure 10x. That makes it 100 lakh folks (i.e. 10 million) as a guesstimate who will try to reserve tickets using IRCTC in just a single day.
The first question to ask is are those many tickets available? The answer is an emphatic no. The Centre for Railway Information Systems that develop CONCERT, the backend engine behind web bookings only does around 2.2 million reservations a day. So there’s no way IRCTC can satisfy 10 million users. We don’t have that many seats to reserve.
The second: is 10 million visits a huge number? This is a tough question to answer because it depends quite a bit on what those folks are doing. On most days, the IRCTC website homepage is accessible and loads up reasonably quick, but when you try to login, search or book, it falls down flat. So most likely bandwidth exhaustion is not the root cause, because 10 million visits is just about 11 visits a second. That shouldn’t translate to a lot of bandwidth. Besides, even 100Mbps+ pipes are cost-effective for an organisation the size of IRCTC.
My theory is that the problem likely is the CONCERT backend. That’s not built to handle this kind of a consistent load, especially at peak Tatkal hours when traffic per second could be much more than what I’ve estimated above. And CONCERT was probably never built with online reservation in mind; it was built for a world where people queued up physically, talked to a railway official and booked tickets. And neither CRIS nor the Railways would want an immediate revamp. So what can IRCTC do about it?
There is a very simple solution: decouple the user experience from the backend booking system. I’ll explain what I mean in screenshots:
Step 1: User goes to IRCTC website, logs in and is taken to a page that has a queue number and an approximate wait time on it. This queue number is the position in the queue and is alloted on a first-come first-serve basis and resembles a physical queue where folks wait to book tickets via CONCERT. The page auto-refreshes and updates this information periodically.
Step 2: When the user reaches the front of the queue, he’s taken to the search & booking page. IRCTC perhaps takes up around 500 customers in a minute this way (or however much CONCERT can reliably handle) & booking proceeds as usual.
As I see it, if there’s no way to work around limitations of older software, the only thing you can do is remove customer frustration. And it’s high time they did something to improve the Tatkal madness.
Hat-tip to Anoop for making me dig deeper into this.
So if you’re like me and have a ton of different passwords to manage but don’t know how to securely store them, here’s a neat trick: first off, don’t use password managers that store your data in proprietary formats; god forbid if you ever someday need to change platforms or store something more than just “passwords”. Use a simple plain text file and pick Markdown to organize data. Here’s how mine looks:
Now, use a little known facility in OSX to create encrypted disks. Type ⌘+space & open Disk Utility. Now, File > New > Blank Disk Image. Under Encryption, choose 256-bit (why not?) and for image format, choose sparse disk image. Choose a place to save and you’ve got your own secure storage.
Drag and drop your Credentials markdown file into your disk image and you’ve got your own secure password store. If you’ve got any backup tools like Time Machine or Backblaze installed, then it’ll pick up this file too so your passwords are backed up. Have fun!
Here’s a small nod to Backblaze. They’ve been managing my offsite backup needs for over 2 years now with no complaints. It works much like Dropbox, which is probably the biggest compliment I can give them.
Really great article from Ben Sandofsky that mirrors some of my recent thinking around Phonegap:
The difference is shell apps come from the wrong mentality. They start from, “How do we reduce effort?” instead of “How do we deliver the best product?”
Three years ago, Adobe was a desktop publishing company heavily invested in proprietary tools. It had great desktop image publishing software with Photoshop, top-of-the-line rich content creation for the web with Flash and good and accessible document sharing for the desktop with Adobe Acrobat.
And then Steve Jobs decided to wage a war on Flash. And in a testament to how fast things can change in the IT world, Adobe suddenly looked to be in trouble: an aging software company that didn’t have a cloud solution, wasn’t doing anything for mobile media creation and didn’t have any out-of-the-box solutions for creating mobile apps. Everybody else seemed to be moving data to the cloud, writing mobile applications that were far more interactive than anything previously available and moving on from static web content on the desktop to richer desktop-like web applications.
For a while, Adobe seemed to flounder. Like any company faced with the innovator’s dilemma, it tried to double down on its roots and extend its older software in ways it had never been written to do. Around three years after Adobe promised to port Flash over to mobile devices, it finally had a version that worked “well enough”. But after harping on the “open” bandwagon for quite a bit (with partners who seemed to support it half-heartedly no less), somebody at Adobe finally took a long, hard look at the Steve Job’s letter in which he summarizes everything that’s wrong about Flash (and about Adobe).
And the new Adobe is awesome. It’s a company that has woken up to what it does best: create great tools for web (and mobile) developers. Dreamweaver 5.5 significantly improves HTML5 support, works with mobile browsers and supports jQuery out-of-the-box. Adobe picked up some nifty technologies along the way too: it acquired Nitobi, makers of the top-notch Phonegap application that gives it a great foothold in mobile webapp creation (which in a stroke of genius, it then promptly submitted to the Apache foundation and ensured proper stewardship and great continuity). A similar Typekit’s acquisition gave it a commanding position in the web type foundry world.
The turnaround point probably came with the announcement to ditch Flash for mobile devices. That took serious balls and it was from an Adobe coming to the realization that it had to give up the Flash empire. But John Nack puts it really well here:
“When the oak is felled the whole forest echoes with its fall, but a hundred acorns are sown in silence by an unnoticed breeze.”
And those acorns are starting to sprout. Adobe has great new HTML5 development tools in the works, a growing community around web standards, and software that’s looking great on the mobile, desktop and on the web.
But most importantly perhaps, with today’s Creative Cloud offering, Adobe has shrugged itself off its desktop software roots. A more accessible subscription model means that customers used to paying less than a buck for an app will find Adobe’s pricing much more palatable now. And it’s working to innovate on the cloud as well, offering a full suite of creation, storage, sharing and publishing tools.
Adobe is poised to do great stuff. Happy for them!
I took one look at the Holstee Manifesto and decided I wanted it right then & there.
Here’s what it says:
This is your Life.
Do what you love, and do it often. If you don’t like something, change it. If you don’t like your job, quit. If you don’t have enough time, stop watching TV. If you are looking for the love of your life, stop; they will be waiting for you when you start doing the things you love.
Stop over analyzing, life is simple. All emotions are beautiful. When you eat, appreciate every last bite. Open your mind, arms, and heart to new things and people, we are united in our differences. Ask the next person you see what their passion is, and share your inspiring dream with them. Travel often; getting lost will help you find yourself.
Some opportunities only come once, seize them. Life is about the people you meet, and the things you create with them so go out and start creating.
Life is short. Live your dream and share your passion.
And it says this in beautiful old school typographic print. I ordered one, had it framed in classic black and it now hangs on my wall to be the first thing I see when I wake up.