Startup founders: How not to write an email

Consider this email, And now consider this one, Hi Ashish, You signed up for the Orchard beta not too long ago, and we’re excited to finally send you an invite! ( Just to jog your memory, Orchard helps you make the most of your relationships, keeping you up to date on where you’re spending your time and who you need to catch up with. It’s somewhere between a personal CRM and a todo list for your connections....

The "key" problem in cryptocurrency

All cryptocurrencies are eventually tied to a “private” key. You lose this key, and the funds are gone, forever. Millions worth of bitcoins have disappeared from the circulation due to lost keys. You can memorize the key by mapping it into passphrase consisting of memorizable words but if you forget that, like many others, the coins are unrecoverable. An alternative is to trust a centralized service like Coinbase, but then all the benefits of investing in a decentralized currency are gone....

Introducing adb-enhanced: A swiss army knife for Android development

Android development requires tons of disconnected approaches for development and testing. Consider some scenarios To test runtime permission - Go to Settings -> Applications -> Application info of the app you are looking for and disable that permission. To test a fresh install - adb shell pm clear-data com.example To test your app under the battery-saver mode - turn on the battery saver mode by expanding the notification bar To stop the execution of an app - kill it via activity manager, adb shell am kill com....

Swift, Kotlin, and Go

It is impressive to see the amount of similarity which exists in Swift, Kotlin and Go, the three new languages for iOS, Android, and server-development respectively. Consider a simple, Hello World program. Swift Swift 1 2 3 4 5 func printHello() { // Type automatically inferred to string let name = "Ashish" // let declares a read-only variable print("Hello world from \(name)!") } Kotlin Kotlin 1 2 3 4 5 fun printHello() { // Type automatically inferred to string val name = "Ashish" // val declares a read-only value, var declares a read-write variable println("Hello world from ${name}") } Go...

Server vs mobile development: Where the code runs matter

When the code runs on your servers, you have much more control over the “context” in which it runs. On the mobile devices, the device OS and the user control the context. This difference leads to some subtle implications. One significant set of differences comes from the lack of control of the platform. For server-side code, one can choose from a wide array of languages. For the mobile code, however, the best choice would almost always be the one dictated by the platform - Java/Kotlin on Android and Objective-C/Swift on iOS....

Google I/O 2018: Android Notes

Highlights All android support library code is moving to the androidx namespace. No more android.support.v4 or android. support.v7 namespaces. Android app bundle to split the app into downloadable modules Navigation library to set up navigation between different activities/fragments. Use WorkManager for background work - this is an improvement to JobScheduler Major improvements to Android Studio. Most standalone tools were deprecated in favor of adding the same functionality into Android Studio. Major improvements to Android Vitals which in Google Play to learn more about what’s going on with the Android app’s performance....

Android: The right way to pull SQLite database

Let’s say you are developing an Android app com.example.android and want to access its database file named “content” from the test device/emulator. To access this file, located in app’s database directory, on both rooted and unrooted device would be Bash 1 2 3 4 5 $ APP_NAME=com.example.android $ adb shell run-as $APP_NAME cp databases/content.db /sdcard/content.db && $ adb pull /sdcard/content.db content.db && $ adb shell rm /sdcard/content.db ... This seems to work but is incorrect....

Skin in the game

Book summary: Skin in the game by Nassim Nicolas Taleb

Skin in the game Skin in the game creates a diversity of beliefs and ideas, for example, restaurant businesses. Lack of it creates a monoculture, for example, journalism. Skin in the game comes with a conflict of interest. For example, a shareholder is more inclined to say positive things about the company, whose shares he holds. Even then, skin in the game is preferable over no skin in the game. A lack of skin in the game, usually, produces a monoculture of beliefs. Bureaucrats, with no skin the game, usually make the problems worse by deciding things from the top. Beware of “good” advice where you will get both the good and the adverse outcomes of that advice while the advice-giver will only get a good result. Metrics puts one’s skin in the wrong game. For example, a doctor who has to optimize for a five-year survival rate of a cancer patient might go for radiation therapy as opposed to laser surgery even though radiation therapy has worse 20-year survival rates. Pilots have more skin in the game than surgeons. If a plane has a 98% chance of surviving a flight, then all pilots would have been dead for now, while medical science can operate with a much lower survival rate since skin in the game is primarily of the patients and much lower of surgeons. An academic experiment where one is supposed to wager a bet and hypothetically believe in a specific scenario is devoid of real risk and hence devoid of skin in the game. Academia, when left unchecked, for the lack of skin in the game, evolves into a ritualistic self-referential publishing game.

Book summary: How not to be wrong by Jordan Ellenberg

The book focuses on the application of simple and profound maths to day-to-day life and how not to be deceived by mathematical traps. Dividing one number by another is mere computation. Figuring out what to divide is mathematics.

Stingray City, Cayman Islands

Escaping into Caribbean with Norwegian Escape Cruise

We took a Norwegian cruise in the western Caribbean. The journey was seven-days long, three days on board, and four days at Falmouth (Jamaica), Georgetown (Cayman Islands), Costa Maya (Mexico), and Great Stirrup Cay (Bahamas). If you are a first-time cruiser, read some of my tips for first-time cruisers.