Skip to content

Instantly share code, notes, and snippets.

View jacobSingh's full-sized avatar

Jacob Singh jacobSingh

View GitHub Profile
class Provider():
def getFollowers(username):
pass
class LinkedInProvider(Provider):
def __init__(self):
pass
  • 9:00 AM - 10:00 AM: Breakfast
    • Check with @Shaista if we have booked breakfast
  • 10:00 AM - 10:30 AM: @jacob to open (Overall priorities as a company, tech priorities, consumer and supply priorities, welcome the biz leaders)
  • 10:30 AM - 11:30 AM: Sesh with Biz leaders. @jacob to facilitate.
    • Collect questions before we start the session.
    • @Akshat Bansal and @vaidik to request PV and KT to address the team on Wednesday
  • 11:30 AM - 12:00 PM - Chai break
  • 12:00 PM - 1:00 PM - OKR Owners to talk about tech high-level OKRs, progress and the way forward (@Rohan Gandhi to talk about SVC, Hara Dhara team to talk about the plans, Incident Management as a new OKR?, @Devika Razdan to introduce EDM's charter)
  • 1:00 PM - 2:00 PM - Lunch
  • 2:00 PM - 4:00 PM - Team OKR Session as last time (@vaidik and @Akshat Bansal to figure this out)

DevOps as the glue for Self Determination Theory

I head product and engingineering for Grofers, the fastest growing online grocer in India. Grofers has grown by over 8x from $60MM in GMV to nearly $500MM in the last two years. A big part of this success has been the ability of our team to go from idea to execution rapidly.

While we are leading the pack right now in terms of innovation and growth, we are competing offline with giants like DMart and Reliance, and online with Alibaba (via Big Basket), Amazon and Walmart (via FlipKart). We cannot outspend - we must out-innovate.

So I have two goals in my job: To scale and to innovate.

Unfortunately, these two goals are by nature opposing forces. The more people you add to systems, and the more complex you make those systems, the harder it is to move from idea to execution. Ideas are not worth much now, there are few defensible positions and what few are there, do not remain long. It all comes down to who can differentiate fastest.

1. Frib the frob
2. Make slides for the presentation
3. Mario time
- Kill Bowser
- Save Princess
- Destroy the patriarchy
- Stop trying to save princesses and just listen to them
4. Drink a beer
5. Write some code
6. Eat a cookie
#!/bin/bash
DNS_SERVER="1.1.1.1"
networksetup -getdnsservers Wi-Fi | grep "$DNS_SERVER" > /dev/null
if [ $? != 0 ]; then
networksetup -setdnsservers Wi-Fi "$DNS_SERVER"
echo "Added 3rd party DNS $DNS_SERVER"
else
networksetup -setdnsservers Wi-Fi Empty
echo "Removed 3rd party DNS "
fi
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- Latest compiled and minified CSS -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
<!-- Optional theme -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap-theme.min.css" integrity="sha384-rHyoN1iRsVXV4nD0JutlnGaslCJuC7uwjduW9SVrLvRYooPp2bWYgmgJQIXwl/Sp" crossorigin="anonymous">
#REad in the log
matches = pd.read_csv('../data/all_but_champ/match_log.csv')
#Add a column for match length
matches["length"] = matches["player1-score"] + matches["player2-score"]
# Get all the records where Trav won
travis_winner = matches[matches["winner"] == "Travis Roberts"]
# Get all the records where Trav lost
travis_loser = matches[matches["loser"] == "Travis Roberts"]
i=1
def wtf(arg):
global i
print("ran {} times".format(i))
i = i+1
# return
return pd.Series([0,0,1490,1510])
print(abg1.matches.shape)
abg1.matches.apply(wtf, axis=1)
@jacobSingh
jacobSingh / index.html
Created November 11, 2014 07:50 — forked from darwin/index.html
<!DOCTYPE html>
<meta charset="utf-8">
<link rel="stylesheet" href="http://cmx.io/v/0.1/cmx.css">
<script src="http://cmx.io/v/0.1/cmx.js" charset="utf-8"></script>
<style>.cmx-user-scene4 .cmx-text-border .cmx-path {stroke: orange}</style>
<body>
<div style="max-width:900px; -webkit-transform:rotate(0deg)">
<scene id="scene1">
<label t="translate(0,346)">
@jacobSingh
jacobSingh / index.html
Last active August 29, 2015 14:08 — forked from darwin/index.html
<!DOCTYPE html>
<meta charset="utf-8">
<link rel="stylesheet" href="http://cmx.io/v/0.1/cmx.css">
<script src="http://cmx.io/v/0.1/cmx.js" charset="utf-8"></script>
<style>.cmx-user-scene4 .cmx-text-border .cmx-path {stroke: orange}</style>
<body>
<div style="max-width:900px; -webkit-transform:rotate(0deg)">
<scene id="scene1" width="400px">
<label t="translate(0,346)">