486 lines
14 KiB
Org Mode
486 lines
14 KiB
Org Mode
# -*- mode: org -*-
|
||
|
||
|
||
Archived entries from file /home/adam/notes/org-notes/notes.org
|
||
|
||
|
||
* DONE Interview with Roopa Bose
|
||
:PROPERTIES:
|
||
:ARCHIVE_TIME: 2023-04-19 Wed 10:55
|
||
:ARCHIVE_FILE: ~/notes/org-notes/notes.org
|
||
:ARCHIVE_OLPATH: Tasks
|
||
:ARCHIVE_CATEGORY: notes
|
||
:ARCHIVE_TODO: DONE
|
||
:END:
|
||
- 7 Years Experience
|
||
- Go GRPC
|
||
- Docker
|
||
- DB
|
||
- JS
|
||
** DONE Roopa Interview
|
||
|
||
How did you reduce deplyoment time?
|
||
How did you optimize for dependency?
|
||
What wentinto reducing latency with API calls?
|
||
|
||
|
||
Just moved to canada
|
||
|
||
6 years java
|
||
2 yrs golang
|
||
transition from java to golang
|
||
tutorials
|
||
had to build a feature - used this as practical experience
|
||
|
||
|
||
startup experience
|
||
|
||
Got into angular as part of startup
|
||
|
||
EC2 and S3
|
||
|
||
Interested in Backends'
|
||
|
||
Difference bw authentication
|
||
* are you you
|
||
* do you have permissions
|
||
|
||
Describe the structure of a JWT
|
||
token expiration
|
||
session managments
|
||
user information is encrypted
|
||
|
||
container
|
||
envelopes environment
|
||
containers
|
||
|
||
|
||
prod issue was reported by customer
|
||
missed a test case?
|
||
did not have a proper testing tool?
|
||
testing strategy?
|
||
QA team and developer?
|
||
|
||
what langauges are you most comfortable with?
|
||
leet code done in java
|
||
|
||
returned cache result
|
||
rotate secrets
|
||
-- found out from logs
|
||
|
||
diagnosing the issues
|
||
service had exceeded timeout.
|
||
|
||
|
||
marques Q:
|
||
** DONE Give Feedback on Roopa
|
||
|
||
Roopas didn't seem like the strongest candidate to me.
|
||
|
||
During the short-form questions, she understood conceptually the JWT
|
||
and authentication vs authorization. She hasn't worked with K8s. With
|
||
a little guidance she did seem to understand what a container was. At
|
||
first the explanation was a "virtualenv".
|
||
|
||
My read on the answers were that the information she communicated was
|
||
decent surface level knowledge but when drilling down a bit further,
|
||
the understanding broke down quickly.
|
||
|
||
With respect to the long-form questions, she did much better. I liked
|
||
her answers for how she had improved the microservices in her previous
|
||
job. She had implemented a caching layer to keep data local within
|
||
their services as opposed to always hitting Salesforce. I would say
|
||
that her process for identitifying the issue was a bit lacking, but
|
||
she did provide results, so it worked out. The strategy to diagnose
|
||
the problem was more of seeing errors in logs and then looking at the
|
||
fix, but given that they didn't have much in terms of o11y, I think
|
||
that's the best she could have done.
|
||
|
||
She hadn't really known what we did, and wasn't able to make it very
|
||
far in guessing how provisioning would work. Given that she hasn't
|
||
worked in the space, I would expect her to think about what could
|
||
possibly go into this, but she didn't get far without Sarah leading
|
||
her through it.
|
||
|
||
Overall, I think that she's not fit for the senior position.
|
||
|
||
* DONE Add logging to RAILS for affected 1564 users
|
||
:PROPERTIES:
|
||
:ARCHIVE_TIME: 2023-04-19 Wed 10:55
|
||
:ARCHIVE_FILE: ~/notes/org-notes/notes.org
|
||
:ARCHIVE_OLPATH: Tasks
|
||
:ARCHIVE_CATEGORY: notes
|
||
:ARCHIVE_TODO: DONE
|
||
:END:
|
||
|
||
* DONE Figure out what users are affected by =#_incident-1564=
|
||
:PROPERTIES:
|
||
:ARCHIVE_TIME: 2023-04-24 Mon 15:01
|
||
:ARCHIVE_FILE: ~/notes/org-notes/notes.org
|
||
:ARCHIVE_OLPATH: Tasks
|
||
:ARCHIVE_CATEGORY: notes
|
||
:ARCHIVE_TODO: DONE
|
||
:END:
|
||
[2023-04-19 Wed]
|
||
98b54728-ca71-47f8-8a86-5326dfa94b68
|
||
969eb393-ddfe-4db8-83e5-a4f6a4d1cae8
|
||
96293db0-1756-4a2e-97dc-3ed8051c76c3
|
||
f31ca1b8-35c9-43b1-8abd-205157da57ab
|
||
cc817f6e-f56f-4cae-91f2-eb1a85049847
|
||
** DONE GET FeatureFlag =inc-1564= created
|
||
** DONE TURN on FeatureFlag for the affected users
|
||
|
||
* DONE Figure out how API caching works
|
||
:PROPERTIES:
|
||
:ARCHIVE_TIME: 2023-04-24 Mon 15:01
|
||
:ARCHIVE_FILE: ~/notes/org-notes/notes.org
|
||
:ARCHIVE_OLPATH: Tasks
|
||
:ARCHIVE_CATEGORY: notes
|
||
:ARCHIVE_TODO: DONE
|
||
:END:
|
||
[2023-04-21 Fri]
|
||
[[file:~/repos/packet_api/app]]
|
||
|
||
#+begin_src ruby
|
||
{"api-memcached:11211"=>
|
||
{"pid"=>"1",
|
||
"uptime"=>"14588595",
|
||
"time"=>"1682087387",
|
||
"version"=>"1.4.39",
|
||
"libevent"=>"2.0.21-stable",
|
||
"pointer_size"=>"64",
|
||
"rusage_user"=>"55637.149812",
|
||
"rusage_system"=>"312432.516705",
|
||
"curr_connections"=>"178",
|
||
"total_connections"=>"6312162",
|
||
"connection_structures"=>"233",
|
||
"reserved_fds"=>"20",
|
||
"cmd_get"=>"66235052615",
|
||
"cmd_set"=>"2891259574",
|
||
"cmd_flush"=>"0",
|
||
"cmd_touch"=>"0",
|
||
"get_hits"=>"66044041688",
|
||
"get_misses"=>"191010927",
|
||
"get_expired"=>"7840267",
|
||
"get_flushed"=>"0",
|
||
"delete_misses"=>"151488684",
|
||
"delete_hits"=>"4971710",
|
||
"incr_misses"=>"0",
|
||
"incr_hits"=>"0",
|
||
"decr_misses"=>"0",
|
||
"decr_hits"=>"0",
|
||
"cas_misses"=>"0",
|
||
"cas_hits"=>"602205",
|
||
"cas_badval"=>"35181",
|
||
"touch_hits"=>"0",
|
||
"touch_misses"=>"0",
|
||
"auth_cmds"=>"0",
|
||
"auth_errors"=>"0",
|
||
"bytes_read"=>"11288707288755",
|
||
"bytes_written"=>"91579773904379",
|
||
"limit_maxbytes"=>"67108864",
|
||
"accepting_conns"=>"1",
|
||
"listen_disabled_num"=>"0",
|
||
"time_in_listen_disabled_us"=>"0",
|
||
"threads"=>"4",
|
||
"conn_yields"=>"2570603764",
|
||
"hash_power_level"=>"16",
|
||
"hash_bytes"=>"524288",
|
||
"hash_is_expanding"=>"0",
|
||
"malloc_fails"=>"0",
|
||
"log_worker_dropped"=>"0",
|
||
"log_worker_written"=>"0",
|
||
"log_watcher_skipped"=>"0",
|
||
"log_watcher_sent"=>"0",
|
||
"bytes"=>"66018118",
|
||
"curr_items"=>"44567",
|
||
"total_items"=>"2582414728",
|
||
"expired_unfetched"=>"5440550",
|
||
"evicted_unfetched"=>"139326914",
|
||
"evictions"=>"161345638",
|
||
"reclaimed"=>"6384399",
|
||
"crawler_reclaimed"=>"0",
|
||
"crawler_items_checked"=>"0",
|
||
"lrutail_reflocked"=>"48"}
|
||
}
|
||
#+end_src
|
||
|
||
Found out that you can set `-vv` on memcached to get the commands dumped out
|
||
|
||
* DONE look at VMC-E SDDC
|
||
:PROPERTIES:
|
||
:ARCHIVE_TIME: 2023-04-24 Mon 15:02
|
||
:ARCHIVE_FILE: ~/notes/org-notes/notes.org
|
||
:ARCHIVE_OLPATH: Tasks
|
||
:ARCHIVE_CATEGORY: notes
|
||
:ARCHIVE_TODO: DONE
|
||
:END:
|
||
|
||
* DONE Audit Spot Market Bids
|
||
:PROPERTIES:
|
||
:ARCHIVE_TIME: 2023-05-10 Wed 16:03
|
||
:ARCHIVE_FILE: ~/notes/org-notes/notes.org
|
||
:ARCHIVE_OLPATH: Tasks
|
||
:ARCHIVE_CATEGORY: notes
|
||
:ARCHIVE_TODO: DONE
|
||
:END:
|
||
|
||
#+begin_src sql :name max_bids per facility
|
||
SELECT p.slug, array_agg(f.code), array_agg(cl.max_allowed_bid)
|
||
FROM capacity_levels cl
|
||
JOIN plans p ON cl.plan_id = p.id
|
||
JOIN facilities f ON cl.facility_id = f.id
|
||
JOIN metros m ON f.metro_id = m.id
|
||
GROUP BY p.slug
|
||
ORDER BY p.slug ASC;
|
||
#+end_src
|
||
|
||
#+begin_src sql :name checking for distinct prices
|
||
|
||
SELECT cl.plan_id, cl.max_allowed_bid, COUNT(DISTINCT cl.max_allowed_bid)
|
||
FROM capacity_levels cl
|
||
WHERE cl.deleted_at < 'January 1, 1970'
|
||
GROUP BY plan_id, max_allowed_bid;
|
||
#+end_src
|
||
|
||
Results [[file:capacity_levels_pricing.csv][capacity_levels_pricing.csv]]
|
||
|
||
* DONE Upgrade CRDB to 22.2.7
|
||
:PROPERTIES:
|
||
:ARCHIVE_TIME: 2023-05-10 Wed 16:03
|
||
:ARCHIVE_FILE: ~/notes/org-notes/notes.org
|
||
:ARCHIVE_OLPATH: Tasks
|
||
:ARCHIVE_CATEGORY: notes
|
||
:ARCHIVE_TODO: DONE
|
||
:END:
|
||
|
||
* DONE Figure out /organizations caching
|
||
:PROPERTIES:
|
||
:ARCHIVE_TIME: 2023-06-06 Tue 16:34
|
||
:ARCHIVE_FILE: ~/org-notes/notes.org
|
||
:ARCHIVE_OLPATH: Tasks
|
||
:ARCHIVE_CATEGORY: notes
|
||
:ARCHIVE_TODO: DONE
|
||
:END:
|
||
|
||
So the most called version of the =/organizations= endpoint is the one that’s called with the query params =?per_page=100=. Normally we're spending 200-300ms just getting the data to render the view.
|
||
|
||
At first I thought that includes and excludes would be the culprits here, but it doesn't seem so.
|
||
|
||
The view itself has many calls to `exlucdable_include_related` which is a construct that loads related values from the organization unless explicitly excluded.
|
||
|
||
This means that we're making several round trips to the DB to fetch data that is almost always in the view.
|
||
|
||
The best bang for our buck here is to parse the includes and excludes before we get to the view, and eager load as much as we can so that we save DB trips.
|
||
|
||
* DONE Meeting with DevRel to talk about Provisioning Failures
|
||
:PROPERTIES:
|
||
:ARCHIVE_TIME: 2023-06-06 Tue 16:34
|
||
:ARCHIVE_FILE: ~/org-notes/notes.org
|
||
:ARCHIVE_OLPATH: Tasks
|
||
:ARCHIVE_CATEGORY: notes
|
||
:ARCHIVE_TODO: DONE
|
||
:END:
|
||
Chris:
|
||
Cluster api - failed provision
|
||
it shows up with a 403 - moving the project to a new project
|
||
if the device is not ready handling
|
||
|
||
|
||
there was some effort in the pass
|
||
jordan
|
||
|
||
should clients be polling events
|
||
|
||
if it appears in my devices list
|
||
|
||
|
||
|
||
pxe boot can time out
|
||
|
||
Phoning home
|
||
|
||
|
||
wouldn't want to see it
|
||
|
||
|
||
check on rescue and reinstall operations
|
||
|
||
* DONE Get PR for Atlas PR merged for k8s-nautilus-resource-owner
|
||
:PROPERTIES:
|
||
:ARCHIVE_TIME: 2023-06-07 Wed 22:19
|
||
:ARCHIVE_FILE: ~/org-notes/notes.org
|
||
:ARCHIVE_OLPATH: Tasks
|
||
:ARCHIVE_CATEGORY: notes
|
||
:ARCHIVE_TODO: DONE
|
||
:END:
|
||
|
||
* DONE Figure out why api-internal is stuck
|
||
:PROPERTIES:
|
||
:ARCHIVE_TIME: 2023-07-04 Tue 13:04
|
||
:ARCHIVE_FILE: ~/org-notes/notes.org
|
||
:ARCHIVE_OLPATH: Tasks
|
||
:ARCHIVE_CATEGORY: notes
|
||
:ARCHIVE_TODO: DONE
|
||
:END:
|
||
problem: Still in INIT after 11m
|
||
node: Successfully assigned api/api-internal-697b64c8b7-vfwrh to prod-ny5-core-09
|
||
api-internal was missing NATS configuration, db:seed was triggering NATS events
|
||
|
||
* TODO Keep going with Infratographer events
|
||
:PROPERTIES:
|
||
:ARCHIVE_TIME: 2023-07-04 Tue 13:08
|
||
:ARCHIVE_FILE: ~/org-notes/notes.org
|
||
:ARCHIVE_OLPATH: Tasks
|
||
:ARCHIVE_CATEGORY: notes
|
||
:ARCHIVE_TODO: TODO
|
||
:END:
|
||
- The papertrail gem lets you know what changed
|
||
`o.versions.first.object_changes` yields the last set of saved changes
|
||
- Need to whitelist which fields are shareable
|
||
- Plan, take the raw change set
|
||
- Reduce changeset to whitelisted fields
|
||
- Emit that change set to infratographer.
|
||
- Try to figure out what the event structure for a membership being added means.
|
||
|
||
Revision: We ditched the changes and just slapped the object IDs
|
||
in the event.
|
||
|
||
This is actually a good move. By just generating event by the ID we
|
||
reduce the chance that consumers depend on the state of an object
|
||
instead of just the ID.
|
||
|
||
* DONE Keep going with Infratographer events
|
||
:PROPERTIES:
|
||
:ARCHIVE_TIME: 2023-07-04 Tue 13:09
|
||
:ARCHIVE_FILE: ~/org-notes/notes.org
|
||
:ARCHIVE_OLPATH: Tasks
|
||
:ARCHIVE_CATEGORY: notes
|
||
:ARCHIVE_TODO: DONE
|
||
:END:
|
||
- The papertrail gem lets you know what changed
|
||
`o.versions.first.object_changes` yields the last set of saved changes
|
||
- Need to whitelist which fields are shareable
|
||
- Plan, take the raw change set
|
||
- Reduce changeset to whitelisted fields
|
||
- Emit that change set to infratographer.
|
||
- Try to figure out what the event structure for a membership being added means.
|
||
|
||
Revision: We ditched the changes and just slapped the object IDs
|
||
in the event.
|
||
|
||
This is actually a good move. By just generating event by the ID we
|
||
reduce the chance that consumers depend on the state of an object
|
||
instead of just the ID.
|
||
|
||
* DONE Express concern around engineering quality
|
||
:PROPERTIES:
|
||
:ARCHIVE_TIME: 2023-08-16 Wed 10:36
|
||
:ARCHIVE_FILE: ~/org-notes/notes.org
|
||
:ARCHIVE_OLPATH: Tasks
|
||
:ARCHIVE_CATEGORY: notes
|
||
:ARCHIVE_TODO: DONE
|
||
:END:
|
||
|
||
I raised concerns that this result is doesn't meet the bar to achieve success on the problem we set out to solve.
|
||
I also do believe it doesn't help solve the problem
|
||
|
||
When I express that the immediate response was defense. That's the wrong response itself.
|
||
|
||
I can be clearer -- There are two points I want here,
|
||
1. I don't think this solves the problem we were targeting.
|
||
2. We have finite time, deciding if we want to iterate or redesign based on learning is a decision to make.
|
||
3. Option 3 which I didn't think was possible is to completely ignore the point.
|
||
|
||
|
||
Here's what's worse though. We're trying to transform the team to be enablers for other teams, so we need to set the bar.
|
||
We have people on this team that are trying to raise / set the bar, and when they raise concerns they are dismissed without
|
||
consideration.
|
||
|
||
|
||
My main concern is our ability to field feedback on this team. I don't
|
||
think I have many occurrences of differing opinions being given the required space.
|
||
|
||
At best it leads to apathy, at worst it leads to mediocrity. Either way it leads to a dysfunctional team by design.
|
||
|
||
|
||
Those people trying to raise the bar aren't doing so selfishly.
|
||
We don't get immediate gain out of performing better or working harder, we still get paid the same.
|
||
So why would we be striving to raise the bar? This is a fundamental question to see if a leader understands
|
||
what high performers need to thrive.
|
||
|
||
* DONE Try to deploy
|
||
:PROPERTIES:
|
||
:ARCHIVE_TIME: 2023-08-16 Wed 10:36
|
||
:ARCHIVE_FILE: ~/org-notes/notes.org
|
||
:ARCHIVE_OLPATH: Tasks
|
||
:ARCHIVE_CATEGORY: notes
|
||
:ARCHIVE_TODO: DONE
|
||
:END:
|
||
|
||
* DONE Write ExternalSecretPush for DB creds and Secret key base
|
||
:PROPERTIES:
|
||
:ARCHIVE_TIME: 2023-08-16 Wed 10:36
|
||
:ARCHIVE_FILE: ~/org-notes/notes.org
|
||
:ARCHIVE_OLPATH: Tasks
|
||
:ARCHIVE_CATEGORY: notes
|
||
:ARCHIVE_TODO: DONE
|
||
:END:
|
||
|
||
* DONE Present Users through the ResourceOwnerShim
|
||
:PROPERTIES:
|
||
:ARCHIVE_TIME: 2023-08-16 Wed 10:36
|
||
:ARCHIVE_FILE: ~/org-notes/notes.org
|
||
:ARCHIVE_OLPATH: Tasks
|
||
:ARCHIVE_CATEGORY: notes
|
||
:ARCHIVE_TODO: DONE
|
||
:END:
|
||
|
||
* TODO Put together POC for micro-caching RAILS
|
||
:PROPERTIES:
|
||
:ARCHIVE_TIME: 2023-08-16 Wed 10:36
|
||
:ARCHIVE_FILE: ~/org-notes/notes.org
|
||
:ARCHIVE_OLPATH: Tasks
|
||
:ARCHIVE_CATEGORY: notes
|
||
:ARCHIVE_TODO: TODO
|
||
:END:
|
||
|
||
* TODO Create a ticket to deal with 403s for provisioning failures
|
||
:PROPERTIES:
|
||
:ARCHIVE_TIME: 2023-08-16 Wed 10:36
|
||
:ARCHIVE_FILE: ~/org-notes/notes.org
|
||
:ARCHIVE_OLPATH: Tasks
|
||
:ARCHIVE_CATEGORY: notes
|
||
:ARCHIVE_TODO: TODO
|
||
:END:
|
||
|
||
* TODO MAKE TICKETS
|
||
:PROPERTIES:
|
||
:ARCHIVE_TIME: 2023-08-16 Wed 10:36
|
||
:ARCHIVE_FILE: ~/org-notes/notes.org
|
||
:ARCHIVE_OLPATH: Tasks
|
||
:ARCHIVE_CATEGORY: notes
|
||
:ARCHIVE_TODO: TODO
|
||
:END:
|
||
scheduler
|
||
worker configuration
|
||
cleanup job
|
||
|
||
* DONE Start Chuck Roast Braise
|
||
:PROPERTIES:
|
||
:ARCHIVE_TIME: 2023-08-16 Wed 11:21
|
||
:ARCHIVE_FILE: ~/org-notes/notes.org
|
||
:ARCHIVE_OLPATH: Tasks
|
||
:ARCHIVE_CATEGORY: notes
|
||
:ARCHIVE_TODO: DONE
|
||
:END:
|
||
|
||
* DONE Create Tickets for Scheduler
|
||
:PROPERTIES:
|
||
:ARCHIVE_TIME: 2023-08-16 Wed 11:21
|
||
:ARCHIVE_FILE: ~/org-notes/notes.org
|
||
:ARCHIVE_OLPATH: Tasks
|
||
:ARCHIVE_CATEGORY: notes
|
||
:ARCHIVE_TODO: DONE
|
||
:END:
|