Skip to main content

Posts

Startup Engineers should learn this one trait

Engineers are creative creatures who like to solve problems and build things. When you build something it becomes a part of you, no wonder that IKEA desk that took you 2 hours to assemble in an apartment has a lot of sentimental value than the Haverty desk you paid 3 times the price and just shipped it to home. Gardeners are also like that and the blackberries I grow in my backyard have a lot of sentimental value than the sweet ones I can buy from the store even though the home grown are sour 50% or more times . Given a problem there can be many designs to solve it and sometimes we pick one design and worked tirelessly for days to add few new classes and a shining new framework and then send it for code review and someone outsider with a devil's advocate view comes up with a new simple design to solve the same problem or sometimes unconsciously you would come up with another simple solution to the same problem but you hold back and you keep investing time trying to make the ...

Seven things doing a 1000 piece puzzle has common with complex engineering projects

I was doing grocery shopping during the New Year holidays and the store had a lot of 1000 piece puzzle on sale for $11. My son had never done more than 100 pieces and  I was like hey this seems interesting for him, so I bought one. We started working it on Jan13th and finished between 4 people on Jan25th. During the journey of finishing I saw a lot of similarities with complex engineering projects. I think everyone in engineering should do one of these and here are some of the things I learned. Underestimating the task : I grossly underestimated the task and amount of time it would take for my son to do it. Teamwork : After a day or two I realized my son lost interest, the whole family had to be involved to keep him motivated on it. Prep work : Like engineering projects, you need to do a lot of prep work like: Turn  the pieces down  Study the patterns Sort the pieces Divide and rule : Like engineering projects you need to pick some quick wins initially to get ...

Compartmentalization helps with Deep Work

I had been trying to learn Solidity/Ethereum over the weekends for the past few months and the first 3-4 weekends were a drag as no matter what I do I wasnt able to focus and getting no where. The problem was not with motivation as I was trying to do it for many weeks but all I was able to do was read 100s of blog posts about it but not able to code anything. Aparently I realized that on weekdays most of my work is in the "study" room whereas on weekend I was trying to do it in the living room. Now working in study on wekeend was an issue as it felt more like work than fun so last 2 weekends I tried changing the schedule and went 3 hours every Sunday to library with my son and while he was reading books I was coding in solidity. I also had trouble writing code after 7:00 PM as I thought my brain was tired but last week I tried sitting in study around 10:00 -11:00 in night and boy I was able to focus and code. Net Net I realized that: "Having a consistent Routine ...

Adventures of a nature lover - 5 national parks in 14 days

To unplug from work and recharge myself I do a 2-3 week trip every year where I am unplugged. Few of the reasons I can totally unplug from work is Unlimited Vacation policy of Egnyte,  Excellent support by the Infrastructure team  Our ethos of pro-actively fixing issues before they become nuisance. TLDR; It's a long post so you can scroll down and first see see images if you need motivation to read it entirely. Me and my family like national parks and camping to recharge us as there is no cell phone  coverage in parks and you are completely unplugged from technology most of the times. We have done many of the national parks nearby and this year we want to see glacier national park as the glaciers may disappear in 10-15 years so see them before they are gone. Behind every successful trip is a "Trip planner" and for our family its my wife, she researched  and made a trip itinerary book. She booked camp sites 6 months in advance She researched trail...

Consistency

Consistency is important as it makes people feel at home and instills trust in the brand. The iOS ecosystem makes it easy for people to transition from one device type to other because it has a consistent look and feel, actions and this way the brain doesn't have to apply any cognitive effort when moving from iPhone to iPad to a Mac. I learned about Keynotopia recently and was enlightened by its application. I saw the transition of a bootstrapped Startup to a consistent Enterprise Startup and this is why I see the importance of consistency introduction in every department at Startup as early as possible. The UX style needs to be consistent with the entire product line and a company-wide style guide maintained by the UX group is absolutely important from very early days of the Startup. Your button color, fonts, logos need to be consistent in each product and even company presentations. From the moment a customer lands on your Marketing website to the trial perio...

Embracing "Deep Work" for productivity

Do you have that feeling where you worked all day but at the end it feels like you got nothing done?  In past 7 years at Egnyte to reduce burnout every 6 months to an year I have to fight this constant productivity battle. I have accumulated several habits in the process to increase productivity, some of them are:- Give yourself scheduled time: Allocate 3 hours for creative work, I had my calendar open whole day and I would get interviews and meeting scheduled randomly all over the day. When you are on a maker's schedule this is disastrous. I recently allocated 3 hours of calendar time and I reject meeting invite unless its absolutely urgent and I am contributing to it. Walk in middle of the day: by the middle of the day brain feels tired and I cant code or focus so I started 30 min walk. I tried listening to podcast or listening music on the walk but that felt more work so I stopped doing it. I just walk and think on the current problem on hand. 5 minute rule: If you can finis...

IPhone will beat DSLR in long run

I started taking interest in photography recently and have accumulated a decent amount of gear but I am realizing that the ease of taking out your phone and clicking picture will beat the DSLR in long run. A friend recently visited me from NY and we wanted to take a family picture and I was setting up Tripod and Flash and doing settings changes and he was like leave all this, lets take a Selfie and that’s it, in 2 second the picture was done and he shared it on facebook in another 1 second.  Now one can argue that DSLR would have clicked a better picture but DSLR has many things going against it:- Learning curve : I must have spent 200+hours on reading about photography but still cant take decent pictures as my bar is high. Not everyone is interested in spending this much time. Amount of gear to be carried : On hikes its a pain to carry your DSLR whereas your phone has to be anyway with you. Cognitive effort of tweaking the gear: You have to have a different lens/settings for d...

Docker Aha moment

I had read many articles about docker before but today was the day when I realized the aha moment.  I had designed database structure of a new application where different micro-services uses their own schemas and each can be located on its own server depending on the scale requirement. Locally I had kept them on same mysql host but on production it will be used on different Google CloudSQL instances.  The aha moment for me was when I was able to fire up multiple mysql containers and map them to a different port and do end to end testing of my sharding code all on local box. All I had to do was docker run -p 3306:3306 -d  gcr.io/xx-us/mysql:5.6 docker run -p 3307:3306 -d  gcr.io/xx-us/mysql:5.6 docker run -p 3308:3306 -d  gcr.io/xx-us/mysql:5.6 docker run -p 3309:3306 -d  gcr.io/xx-us/mysql:5.6 docker run -p 3310:3306 -d  gcr.io/xx-us/mysql:5.6 ..... and I had many mysql servers ready to be tested.   In the VM world I would not even had...

7 essential questions to ask during Product Manager interview

image via https://www.wrike.com/blog/wp-content/uploads/2015/03/software-product-management.png I am an Architect at a Startup called as Egnyte and my daily job involves working closely with Product managers and translating their vision into reality.  I had interviewed hundreds of engineering candidates during my tenure at Egnyte and sometimes I am asked to interview candidates outside my role. Recently I was asked to interview a Product Manager. I was like huh its been a long time I have interviewed a one and the Startup landscape has changed a lot these days.  A good Product Manager these days can really make your product stand out from the competition and drive growth.  How do I know he is the best candidate for the job? I was one of the interviewers and was given 30 min. I usually want one hour but that day was packed with meetings.  A day before the interview I started preparing for it and landed on to this master piece written by Ken Norton( @kennethn ) ...

7 tips to combat email overload and enhance workplace productivity

http://www.conniekuusisto.com/wp-content/uploads/2014/01/Email_overload.png Email had became a productivity hog for me and I was overwhelmed by it. I am working for Egnyte since last 6 years and every year not only the team has expanded but with it the number of emails I receive has increased. New processes get added and new mailing lists get created and  someone adds you to it and now you are blasted with this news feed like twitter firehose. The longer your tenure the more mailing lists you are on. It seems I was working all day, but as a programmer/Architect by heart I was not getting satisfaction if I hadn't coded anything by the end of day or solved a meaty problem in a quarter. Reaching to InboxZero was a mirage to me, you are this close to it and then suddenly in an hour you are blasted 20 emails and there goes another hour sifting through it to see if you have missed anything important.  Programming/Architecture is a creative field and you require decent unint...

Have I started hating mysql and falling in love with distributed databases

It seems Mysql is rock solid if you want: Transactions ACID support So I would still recommend mysql for any thing that is mission critical data and is the primary datastore for your transactions. But what about derived data or analytical data? I had built large scale cluster of mysql server storing metadata about billions of files and folders used by tens of thousands of customers daily and its scaling fine and working good, its still growing at a healthy rate and holding up.  But this requires a lot of baby sitting if you have 100s of nodes and you need to do replication add more nodes rebalancing data monitoring entire cluster Sharding Backup/restore You have to write a lot of tooling and lot of monitoring/babysitting to scale the cluster. Plain stock Mysql will scale up to a limit but vertically scaling has its own issues. So +1 for Mysql but not everything should be stuffed there. But recently me and my team built full text indexing on same dataset usin...

Can you remain a fullstack developer?

I started as a full stack developer 14 years ago but these days its becoming more and more difficult to remain a one. Back in those days all you needed to know was html/css/Js/jsp/java/sql/ant/xml and some tools like tomcat, svn, eclipse and some shell scripting and you are a full stack developer. Being full stack developer means you can code from UI layer to server to database and peel any layer of onion to trace an issue. Now a days you may need to know 20 different technologies in each area before you can easily navigate between layers. Life becomes difficult if its a distributed system. In UI you may need to know React Angular Jquery SASS HTML5 Javascript Node.js Grunt and many more In server you need to know Java Spring Hibernate or any OR tool Guava Nginx Haproxy Memcached and many more.  In Database you may need to know Mysql NOSQL databases like Cassandra or MongoDB Sharding AWS Aurora or RDS ElasticSearch Redis OpenTSDB Hadoop ...

Saas Applications and Manuals?

Software Manuals anyone? Who reads them?  For interactive products like Video games or phones, who reads them?  My 4 year son started using iPad like a pro and now he even tells me this is PBS kids and this is netflix.  When I got an iPhone I never read a manual and havent so far for last 2 years.  As Kids we never read manual for video games. The game developers just made level1 easier and you learn as you play and get better. Recently I had a chance to compare two APM tools AppDynamics and NewRelic at a large scale at my employer and both took me 5 min to setup and get going. But what sold me to NewRelic was their ability to deliver value without doing any additional configuration. Their Level1 itself had so many aha moments that it sold me immediately.  Dont get me wrong, Appdynamics is a very  powerful APM tool but you have to configure it, tweak it like an ERP solution to get value out of it, it felt so 1990s. In past 3 months I never got enough time...

War epics and strategies

I am a big fan of War Epics, but not the recent wars. I am more interested in ancient wars.  It seems there aren’t any ancient war movies from US or UK culture that I liked except movie 300 or the Gladiator For Indian war epics I recommend Ramayana and Mahabharat   but I don’t see that many war strategies in the series. Anyone interested in real war strategies and have patience should definitely watch this series(80+ Episodes, I am at 40th right now ) War of the Three Kingdoms and if you want to see it in short then you can watch the Red Cliff movie but it doesnt do justice so for the patient watch the series, its free on youtube.

And you thought Memcached calls are cheap?

We use Memcached as a distributed cache. We also use sharding in MySQL and each customer data is on different shard. The information about which customer is stored on what shard is static and doesn’t change unless we do a manual customer move.  Because we would do an automatic move a customer in future I started storing this in memcached instead of JVM so I don’t need to coordinate in memory cache flush across multiple boxes. We recently moved a large scale system from python to Java and we were getting close to 2K request per minute on every machine. On checking APM tool I found that a lot of the time is spent in memcached.getObject. Checking one of the memcached box out of many I would found CPU on one of the cores would be pegged at 100%.  I installed  mctop by Etsy and found that the most used key was the key that would lookup this customer is on what shard sudo /opt/mctop/bin/mctop --interface=eth0 --port=23456  Inspecting all other data centres showed ...