What’s odd

Saw someone yesterday who, from a distance, felt like was wearing a Napoleon style hat. It really piqued my curiosity.

When I got closer, it turned out they just had a really odd hairstyle worn in a way that could look like a Napoleonic hat from certain angles. Boring.

Made me think how cultural expectations reverse.

Today, wearing a hat like that would be odd but an outlandishly weird hairstyle isn’t. A century (or two) ago, no one would notice the hat, but that hairstyle would get all the heads turning.

What’s odd today and here is probably not there or then.

Martin Robert C, the ace marketer

His book is ok as a developer guide. It presents a fair number of good practices. It also presents a fair number of practices that aren’t good or are outdated. I personally don’t like that he often fails to, or even refuses to explain the reasons for following the practices he preaches. I prefer to understand why we do something in a particular way, instead of just being told to do it that way. Overall, I don’t find his book a great resource.

There’s something that else I liked about his book. It’s a great example of how to market ideas and occupy domains.

Early in the book he calls himself Uncle Bob. In one go, he’s established a personal connection with the reader, established himself as a father figure to listen to, gotten over the hurdle of a non memorable formal name, and given the readers a common term to identify him with. A non trivial number of people I interview mention Uncle Bob. They may be violating most of the practices he preaches, but they identify with the name.

Another bit of magic is in the book name, Clean Code. In one go, he’s taken ownership of a commonly used term. No developer can now call their code clean without Robert’s principles being brought up. No matter how readable, understandable, refactorable your code is, if it falls foul of Robert’s rules, it will be challenged by one of his many disciples. And no matter how hard to read and understand your code may be, if it aligns with his principles, it’ll be defended as Clean Code.

The marketing skill is present beyond the names too. That bit that I hate about the book – that there’s little to no justification provided for the principles it preaches. That’s a marketing skill too. A combination of “Clean” in the title, a fatherly “Uncle Bob” and good sounding practices means the lack of rationale helps readers accept them faster. Providing reasoning behind them might have made readers think and, maybe, disagree. As any parent knows, once kids disagree and get away with one thing, more disagreements are coming. The teenager years have begun. It’s not clean if followers disagree and disregard part of the scripture.

Overall, the combination of various marketing practices in the book remind me of many things, none of them about good coding. Uncle Bob reminds me of Ronald McDonald, the character that marketed McDonald’s as a healthy, family place. It reminds me of the many “Green” initiatives corporates take. It reminded me most of the modern religions and cults – the leader is a father figure, the cult name is a vague but valued noun or phrase, there’s no questioning of the leader’s dictats, and disagreements are decided based on how closely aligned are with the dictats.

Continue reading Martin Robert C, the ace marketer

Faith. Blind?

Parents are shit scared. They realise how bad is the situation. Their network is full of infected and suffering people. They’ve lost friends and acquaintances. They will not hear one word against the God or his organisation.

Friends are shit scared. They’ve suffered and recovered. Their parents and siblings are infected but stable. They’re scared, not of Covid, but of the God who demands and commands this blind loyalty. They’re scared of what’s happening to the nation, the society, and their future and safety in it.

I fear for both.

I’m sad that I’m so far from both.

Product Engineer, Moi

tldr: I switched careers. I am now an Android developer in a small team at a mid-sized organisation.

In early 2012, I taught myself some Javascript and created my first Chrome extension, AutoConvert.

It was a simple tool to fulfil my specific need—automatically convert units between imperial (the somewhat idiotic unit system that my host country uses) and metric (the much more sensible unit system I grew up with). The code was beginner-level, the design non-existent, and I’d heavily relied on Bootstrap and jQuery. But I’d hit on a user need, and the extension got a little over 15,000 users at its peak.

Encouraged by that first step, I learnt more about Javascript development and other libraries, and created a few more Chrome extensions to satisfy my other itches when the need arose.

Sometime in 2014-15, I took a free, self-administered course on Android development on Udacity. I wanted to fulfil another personal need — create a native Android app for a platform we were using at the time, iDoneThis.

Java was a lot harder, more verbose, and fairly rigid coming from Javascript. Android was way more restrictive as a platform compared to Chrome and the Web. Eclipse was a memory and CPU hog compared to SublimeText. Android apps were harder to develop and iterate. After iDoneThis, I didn’t develop another Android app for a couple of years.

In 2017, I started developing my next Android app — Todo.txt for Android. This was again based on scratching a personal itch. I’m a todo.txt user, and the OG app had stopped working after the original developer didn’t update it when Dropbox changed their API. This new app too started as a Java codebase. But on the, now, 3 year long journey of developing and updating the app, I learnt a lot of new technologies—converted the codebase to Kotlin, replaced AsyncTasks with Coroutines, adopted the MVVM arch with a single Activity, learnt to write and always add unit tests.

Kotlin combined with Android Studio and the Jetpack architecture components brought both speed and structure to my (and the app’s) development. I developed three more Android apps. On the web side, VS Code and Javascript libraries helped me get more productive.

In late 2019, I was frustrated with life in general, consulting in particular, and looking for contentment. After a lot of thought, and encouragement from R, I decided to give a year to attempt a career switch: to become a Product Engineer.

I was indifferent between Android and Web development—I enjoyed both equally. But I knew that I needed to learn a lot on both, particularly technologies and processes used by engineering organisations that I hadn’t needed to use as an amateur solo developer. So I devoted the rest of 2019 and 2020 to filling the gaps. I discovered, learnt and adopted, amongst others, Webpack, Retrofit, Promises, Android library modules, cloud functions with Firebase, Firestore, Gradle tasks, VS Code tasks, Data Binding, and many others. I adopted the Github PR process despite being a solo developer—opened the PRs, reviewed them myself, then merged them in.

Some things I considered but chose not to pursue—CI/CD and dependency injection being top two. Unlike the other technologies/processes, the cost-benefit proposition for these was vastly lopsided as an individual developer and at my apps’ scale.

I also started applying for developer roles, all the way from entry-level associates to senior lead developers. I got a few interviews. As the year went on, I went further in some interview processes. Finally, in October, I was offered a job as an Android developer at xxx1.

I completed my 3 month probation earlier this month, and was welcomed aboard as a permanent employee. I’m now officially an Android developer.
Continue reading Product Engineer, Moi

No dogs allowed

Parents are moving out of the home we grew up in, and into a flat in a ‘society’.

They didn’t want this change but have now accepted it and are looking forward to it.

I struggled to accept this change, specially the circumstances that forced it, but had slowly accepted it. Till now.

I just realised that given it’s a flat in a small town Indian ‘society’, there’s no chance of a pet dog being allowed in there. It breaks my heart.

I had a long pending plan/hope/desire of visiting them and staying with them for a couple of months. I can’t take Chewie there, but I’d plotted about adopting a young dog, training him during my stay in Karnal, and leaving him with them once they developed a bond.

But now that they live in a flat in a ‘society’, this can’t ever happen 🙁

😞😢

‘I’m sorry’

A tree in my neighbour’s backyard has grown over his fence, across the alley between our houses, and into my backyard. It’s been squeezing a bay leaf tree in my backyard against the garden shed. If his tree is not trimmed soon, my bay leaf tree will die. I needed to bring this up with my neighbour so he could hire a gardener and get the tree trimmed back.

I am an uber conflict avoider. The thought of asking someone to do something, with even a slight potential of conflict gives me a shiver.

I am also Indian. So the idea of people refusing to do what’s their responsibility is almost the natural default for me.

The combination of these two characteristics meant that for last few weeks I’ve been playing the encounter with my neighbour in my head. My fears and my overactive imagination meant it had gone far enough that we were filing police complaints against each other for ASBO12.

Anyway, I saw him today when we returned from the evening walk. I waved at him and approached.

Me: Hey Scott, I’m sorry, but do you have a minute.

S: Yes, of course.

Me: I’m sorry, but there’s a tree in your backyard that’s grown over into mine and is strangling one of my trees.

S: Oh I’m sorry. I didn’t notice it.

Me: No worries, it’s right at the far corner.

S: I’m sorry. I’ll get the gardener to come do something about it.

Me: No worries. Thanks.

S: Cheers. I’m sorry. See you later.

No, we didn’t end up filing ASBO complaints against each other. We just said ‘I’m Sorry’ to each other a dozen times, smiled, and carried on.

I can breathe now :)

Continue reading ‘I’m sorry’