Skip to content

Instantly share code, notes, and snippets.

View psdh's full-sized avatar

Sodhi psdh

  • Chainalysis
  • New York
View GitHub Profile
* It's far cheaper to have dupilication than to have the wrong abstraction
* don't reach for the future, reach for open/close so that things are easier in the future.
* make small things, single responsibility et al
* metrics are fallible but so are opinions
*
@psdh
psdh / Is kafka a database | kafka summit 19
Last active May 15, 2019 13:20
Martin Kleppmann | Kafka Summit London 2019 Keynote | Is Kafka a Database? https://www.youtube.com/watch?v=BuE6JvQE_CY
Is kafka a database?
What is it that makes a database, a database?
* A thing that provides ACID properties
D -> Durability
Kafka provides durability, allows replication of paritions
A -> Atomicity
It's not about concurrency. (like when used in Java: AtomicInt)
2 phase commits allows you to achieve atomicity
Summary for https://www.youtube.com/watch?v=HgtRAbE1nBM
Second system syndrome: If we are going to rewrite this, let's also rewrite this and also let's also revisit this and also let's also do this and let's also do that.
Unix was written completely in assembly but not in C, which is a bit of a myth.
Multics was top-down approach.
Unix was a bottom up approach.
First implementation of C didn't have structs. They implemented structs, because they needed them in linux kernel.
GOTO 2017 • Debugging Under Fire: Keep your Head when Systems have Lost their Mind • Bryan Cantrill
Microservices have made services seem more simpler, but have made the overall systems much more complex.
Monitor/Alerting on everything might not be the wisest thing to do.
The art of debugging isn't to guess the answer, it's to ask the right questions. Stop coming up with hypotheses, come up with questions!
debugging should be viewed as a process to understand and improve the system, not merely as a process to remove bugs from a system.
Often, we find beneath innocent wisps of smoke lurk raging coal infernos.
Inventing on principle!
* Creators need an immediate connection to what they create
* you need to see the effect of whaever they are creating, immediately
* so much of creation is discovery
* You need to see what happens if you do x, or do y. If you want to develop on them
* Ideas start small, the creator must see what's happening
The people who we consider as good software engineers, are just really good at playing computer in their heads. (and hence good at guessing/knowing what their code would do)
Here's the recommendation I give to students when they ask me this question (it's a common one!):
You come up with a brilliant idea, you obsess over it, you Google some info, and on your screen lies your idea, being done by someone else, for the last two years. You’re all too familiar with that sinking feeling in your stomach that follows. You abandon the idea almost immediately after all that excitement and ideation.
First (as already mentioned), existing solutions prove your idea — their existence proves that you’re trying to solve a real problem that people might pay to have solved. And it proves that you’re heading in a direction that makes sense to others, too.
Second, and this is the biggie: The moment you see someone else’s solution, you mar and limit your ideas. It suddenly becomes a lot more difficult to think outside the box because before, you were exploring totally new territory. Your mind was pioneering in a frontier that had no paths. But now, you’ve seen someone else’s path. It becomes much h
@psdh
psdh / mozconfig
Created April 6, 2015 15:19
Fennec Mozconfig
# Global options
mk_add_options MOZ_MAKE_FLAGS="-j4"
# Build Fennec
ac_add_options --enable-application=mobile/android
mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/obj-android
# Android
ac_add_options --target=arm-linux-androideabi
ac_add_options --with-android-ndk="$HOME/Android/android-ndk-r8e"
ac_add_options --with-android-sdk="$HOME/Android/android-sdk-linux/platforms/android-21"
ac_add_options --with-android-version=9