Hey Reddit, I just broke the overall piston-driven land speed record! 448.757MPH : pics
I use 1.5 feet per second is roughly equal to 1 mile an hour. It’s actually 1.46666666666666666 feet per second is equal to one mile an hour.

So, from the time their front bumper is equal with yours to the time their rear bumper is passing your front is the length of their car divided by 1.5’ per second, gives you how much faster they were moving.

A Honda Accord is about 15’ in length for reference. If they pass you in less than a second, it’s at least 10 mph faster than you.
2 days ago
square/javapoet: A Java API for generating .java source files.
nice joist-ish library for codegen, takes are of auto-imports, etc
3 days ago
The Tyranny of Stuctureless
there is no such thing as structureless--human nature is such that there is always a hierarchy. thinking you're "structureless" just makes it a hidden and unfair game.

democracy makes it a visible and "fair" game:
- delegation of authority for specific tasks
- executors are still responsible/accountable to the wider group
- distribution of power across many people
- rotation of tasks among individuals
- allocation of tasks along rational criteria
- diffusion of information to everyone, and
- equal access to resources
3 days ago
Life Beyond Distributed Transactions: An Apostate's Implementation - Document Coordination
I need to design my interactions so that both the business data and communications transact together.
4 days ago
Jarrow Formulas : QH-absorb
QH-absorb® is a proprietary, enhanced-stability formula, clinically shown in humans to increase Co-Q10 levels by 215% at 100 mg per day and by 777% over baseline at 300 mg per day. (Mentioned by Attia)
9 days ago
Do calories matter? - Peter Attia
Obesity is a growth disorder just like any other growth disorder.  Specifically, obesity is a disorder of excess fat accumulation.  Fat accumulation is determined not by the balance of calories consumed and expended but by the effect of specific nutrients on the hormonal regulation of fat metabolism.  Obesity is a condition where the body prioritizes the storage of fat rather than the utilization of fat.

thermodynamics viewpoint is correct, but assumes calories consumed and calories stored are independent variables. they are not.
health  keto 
10 days ago
Good Sugar vs. Bad Sugar, Know the Differences | Factor75
HFCS = 50% fructose, "free and unbound", immediately available for fat storage
agave nector = 90% fructose, "low GI", but due to fructose being metabolized in liver instead of blood stream
raw honey = GI of 30, ~good; processed honey has GI of 75
maple syrup = low in free fructose, but 66% sucrose, so 33% fructose, choose darker grades, GL 8.
molasses = 50% free fructose, another 25% via sucrose
coconut palm sugar = ~40% fructose

best fruits: blueberries, strawberries, grapefruit
health  keto 
10 days ago
Keto Diet Plan: The Best and Worst Low Carb Sweeteners | Ruled Me
stevia == good
allulose == good, 1.5x table sugar
Erythritol == sugar alcohol, good, secreted in urine
Xylitol == sugar alcohol, okay, toxic to dogs, possible GI discomfort
maltitol == sugar alcohol, actually high GI, high GI discomfort
sucralose == good if liquid, splenda bulk form still spikes insulin
aspartame == good according to studies, not good for higher temps
saccharin == no proven side effects, but less popular, avoid
overall: use erythritol, stevia, and liquid sucralose
health  keto 
10 days ago
Deep-Frying With Peanut Oil Vs. Other Oils | LIVESTRONG.COM
Peanut oil is a healthy alternative to other types of oils. Peanut oil, like other types of vegetable oils, is low in saturated fat and is free of cholesterol and trans fat. Like olive oil, peanut oil is high in monounsaturated fat, which can reduce your risk for cardiovascular disease when eaten as a replacement for unsaturated fats.
10 days ago
Periodic fasting starves cisplatin‐resistant cancers to death | The EMBO Journal
Recent research by Obrist et al (2018) shows that cisplatin‐resistant growth of lung adenocarcinoma is particularly vulnerable to periodic fasting cycles and starvation‐induced cell death, due to its dependency on glutamine, required for nucleoside biosynthesis, suggesting an opportunity for nutritional anti‐cancer interventions.
cancer  health 
12 days ago
How we scaled nginx and saved the world 54 years every day
Which means that if an event handler needs to read from disk, it will block the event loop until the entire read is finished, and subsequent event handlers are delayed.
programming  nginx 
13 days ago
Apache Voting Process
+0: 'I don't feel strongly about it, but I'm okay with this.'
-0: 'I won't get in the way, but I'd rather we didn't do this.'
-0.5: 'I don't like this idea, but I can't find any rational justification for my feelings.'
++1: 'Wow! I like this! Let's do it!'
-0.9: 'I really don't like this, but I'm not going to stand in the way if everyone else wants to go ahead with it.'
+0.9: 'This is a cool idea and i like it, but I don't have time/the skills necessary to help out.'
20 days ago
RFC 7636 - Proof Key for Code Exchange by OAuth Public Clients
to mitigate mobile side-attack of watching auth-code come back:
1) 1st request to auth server has hash(secret)
2) 2nd request to auth server has secret, to prove, yes, i'm the process that made the 1st request.


* only give auth code to the pre-registered/trusted client uri (via URLs/app links)
* only give auth token to the process who provably made the 1st request (s2s uses pre-shared client secret, mobile uses one-time secret)
22 days ago
Authenticate with a backend server  |  Google Sign-In for Android  |  Google Developers
Verify the integrity of the ID token
* The ID token is properly signed by Google.
* aud is equal to your client ID, e.g. the token was not issued to a malicious app
* iss is equal to accounts.google.com
* exp has not passed
22 days ago
Understanding OAuth 2.0 and OpenID Connect — Runscope Blog
OIDC == oauth2 with a defined identity token and fixed scopes (openid, profile, email, address, and phone)

claim = name/value pair embedded in access/id tokens. JWT defines the concept, but no specific name/value pairs.
22 days ago
Twitch streamers who spend years broadcasting to no one | Hacker News
Yeah. Speaking as someone who ran a rather large fansite about NIN in the 2000s (the entity now basically exists as a Twitter account), you really cannot just "grow organically" on today's internet. I like to tell people I have a marketing allergy. Self-promotion feels gross. The "if you build it, they will come" mantra from Field of Dreams is not applicable to a world where so much more content is being created than can possibly be consumed.
4 weeks ago
Why Does Your Company Deserve More Money?
If you have 12-15 months of runway, and aren't seeing growth+retention, get very lean. You don't deserve a series A.

If you're selling preferred shares: can you convince *yourself* and *your spouse* that this business is worth *the next 10 years of your life*?

1. Is the product delighting users/paying customers, such that they'll talk to each other? If your revenue is ads, your customers are advertisers.
2. Do you have enough ownership to give you choices down the road.
4 weeks ago
Designing GraphQL Mutations – Apollo GraphQL
* Specific mutations that correspond to semantic user actions are more powerful than general mutations
* all mutations have FooInput and FooPayload
* use nesting within FooInput and FooPayload
5 weeks ago
Meet Bandaid, the Dropbox service proxy | Dropbox Tech Blog
Request queueing implemented inside the proxy allows for better management of overloaded backends. Bandaid always processes requests in Last In, First Out (LIFO) order. When the system is not overloaded, the queue will be empty (or almost empty). Thus there’s no real difference between popping requests from the front of the queue or the back of the queue. Where LIFO processing reduces overhead is when the system is overloaded. By processing the newest requests first—since the oldest requests are likely to time out soon—we avoid spending CPU cycles on expiring requests.
programming  http 
5 weeks ago
Thrift + Graphs = Strong, flexible schemas on Hadoop - thoughts from the red planet - thoughts from the red planet
enum Gender {
MALE = 1, FEMALE = 2

union PersonPropertyValue {
1: string name;
2: i16 age;
3: Gender gender;

struct PersonProperty {
1: PersonID id;
2: PersonPropertyValue property;
5 weeks ago
(17) Rodrigo Muñoz - GraphQL Live: Reactive Queries at Facebook - YouTube
* subscriptions are great, but assume you know what business event you want to listen for
* queries have may computed field that don't directly expose what upstream fields they're based on.
* if you have N subscriptions-on-mutations, you can add the field (potentially via a fragment) to each one
* and note, not every subscription that touches that fragment, only those subscriptions for business events that explicitly change the description, as otherwise you're over-fetching.
* all of these entail "a developer finds where that changes description"

* subscriptions & live queries are isomorphic--subscriptions are business change events, live queries are "state is now Y"


* over-observing: if query to backend ends up being a "select *"
* masked dependencies: if query response uses a cache hit, you miss what the underlying data dependency would have been for a cache miss
* partial reactivity: some data sources are react, some are not, and developers can't tell which will/will not be live.
5 weeks ago
(17) Tom Ashworth - GraphQL at Twitter - YouTube
* twitter uses sangria
* assign query cost based on levels of nesting
* use persisted query ids to prevent malicious calls
* subscription is client listening for "event", map it with a "query", and receive the "payload"
* after an event, they're just re-executing query against the real api
* strato is twitter's existing rejoiner/federated database
5 weeks ago
(17) Rob Zhu - GraphQL Subscriptions: Full Stack - YouTube
* subscription takes a source stream and maps it to a response stream
* server has to divine what source stream the query was for
* streaming transport == websockets (small) -> rsocket/MQTT (distributed)
* connection handling == in-process (small) -> gateway/proxy (distributed)
* source stream == in-process (small) -> redis, kafka, SQS, pusher (distributed)
* subscription session data == in-memory (small) -> database/cache (distributed)
* currently powering live likes/comments, typing indicators, live video comments, reactions, many more
* live queries: just rerun queries.
* if T+1 to T+2, value goes from 5 -> 15, subscriptions tell you "this went up by 10" (observing events), live queries tell you "this is now 15" (observing state)
* subscriptions require event system + domain-specific events, live queries require a reactive data layer
* subscriptions tell you "why", live queries don't
5 weeks ago
(17) Dan Schafer - GraphQL: Client-Driven Development - YouTube
* unapologetically driven by needs of frontend views
* language and runtime is built around that
* "think in graphs"--tried using SQL/FQL, did not work well
* "thin api layer"--there was still a huge monolith behind the iOS graphql (e.g. FB's 'ent' PHP monolith), they just replaced the FQL queries/proxies w/graphql queries/proxies

* "scaling models"--had been using coredata, so graphql query was mapped to coredata xml config. first by hand, then by codegen via .graphql files. so added fragments.
* only added fragments after proven need on the client.

* "scaling views"--large coredata files, mutable objects, but react/componentkit/litho one-way views now best practice, so were moving to flux across the board: immutable vended views. what are flux actions? command pattern. so added mutations.
* only added mutations after proven need on the client. "why top-level mutations"? it's flux. that is why there is no CRUD.

* "scaling updates"--subscriptions. 1st impl was 4 months long, prototyped with polling.

* "scaling the language"--added directives, @include(if), at last minute, cleaning up uglier field syntax.

everything was client-driven.
5 weeks ago
Multiplatform native development in Kotlin. Now with iOS!
on module contains code that is not specific to any platform, as well as declarations without implementation of platform-dependent APIs. Those declarations allow common code to depend on platform-specific implementations.
5 weeks ago
(17) Jason Lengstorf - GraphQL at Massive Scale as the Glue in IBM's Microservice Architecture - YouTube
* ibm cloud front-end will load dojo 1 and 2, 5 versions of angular, react. and of course jquery. sometimes react/dojo/jquery all in the same microservice.
* wild-west, written back when people didn't care about the frontend
* who "owns" the graphql proxy
* will one commit take down the entire graphql proxy/endpoint
* want to schemas out to u-services, then aggregate together. "data sources".
5 weeks ago
(17) Adam Kramer - Managing Massive Schemas with Codegen - YouTube
* your graphql schema can/should be mapped 1:1 from your domain objects, e.g. with annotations.
* classes/methods --> types/fields
5 weeks ago
SF hospital charged $15K ‘trauma response fee’ for baby that needed no treatment
EMT and ER can activate trauma response, and guidance is to over-activate for safety
5 weeks ago
(17) The Past, Present, and Future of GraphQL Native - Nick Schrock @ GraphQL Europe - YouTube
* nick schrock, graphql co-creator, 2009-2017.
* "revenge of the monolith"
* original super-graph was 1:1 mapping to business/domain layer, from an assumed monolith (PHP/ent), driven by very backend team, delivered JSON/no client, no javascript/react, client was iOS native
* 1st open resource graphql was to JS ecosystem, but just due to relay, which was react+graphql glued together. leverage the react brand. very domain agnostic, JS focused, assumed microservices.
* JS/frontend loves it, backend hates it.
* see AirBNB, reconciling graphql & thrift. cultural problems. but ironically graphql type system can structure your clients.
* this context led to front-end developers sneaking a very small layer of graphql on top of unwitting/unconvinced backend developer micro-services
* micro-services: "those who don't learn from history will repeat it" ... "those who learn too much from history are doomed to overreact to it": history of software engineering is devs overreacting to horrific pain.
* SQL to NoSQL, data warehouse to data lake, templates to JSX
* micro-service is an over-correction. they are a tool, not a goal. goal is not "to move to micro-services". no, the goal is to "deliver business value".
* what separation are micro-services for? business logic verticals, repo verticals ("more git repos than engineers is insanity at large", "just use folders"), org boundaries (conway's law, but then reorgs lead to orphaned micro-services and repos), language choices (your org should bet on one, two, maybe three languages b/c code reuse is good), scaling constraints (this is a good reason).
* Attempting to decouple what is actually coupled is a terrible idea. Spreading business logic across systems. You'll end up with a distributed monolith.
* "Your affection for GraphQL is your subconscious telling you that it wants the good parts of your monolith back". You want a cohesive view of your business.
* future of GraphQL native: instead of zero-logic graphql, make a beefier graphql. talk to super-scalable store, talk to other micro-services, talk to capability-based services.
* very few graphql backends from scratch: we need fatter gateways. move cross-system business logic into the gateway. vertically-integrated toolkits. scaffolding/code layout. "rails for graphql".
* pivot graphql back to be a balance between back-end/front-end and not front-end only
5 weeks ago
(17) Johannes Schickling - Building GraphQL-Native Microservices - YouTube
* graphcool did graphql-request, graphql-config, graphql playground
* graphql-as-a-service
* graphql as a gateway technology vs. graphql gateway+graphql native
* schema stitching: graphql-tools, graphql weaver
5 weeks ago
Best Practices for GraphQL Clients - YouTube
* client should make caching data easy, dedup responses
* client should make paginated queries easy
* client allow us to make mutations
* co-location: have queries next to the code
* don't create shared fragments, purposefully use per-use fragments
* persisted queries: construct queries at runtime and cache them by id (all iOS/android using that)
* log all versions of a named query over time, and its perf by version
* query/response cached: persisted id+variables -> response. TTL/LRU.
* data consistency: use a normalized store so query cache has latest view of nodes.
* pagination: after=null/first=3 (segment1) and then after=3rd/first=3 (segment2) could see dups across inconsistent pages. have controller merge segments.
* mutations: simple mutation, "connectToFriend", can change lots of node: you're in my friend list, my news feed. "blockUser" undoes those.
* mutations: how do you know what to refetch? reuse UI fragments (will over fetch what hasn't change).
5 weeks ago
(17) GraphQL Schema Design: Tips and tricks from the battlefield - Gustav Rydstedt - YouTube
hasAdmin: hasRole(...)
teacher.ourLessons (notion of "mine"/auth in the graph)
5 weeks ago
(17) Lessons from 4 Years of GraphQL - YouTube
how to evolve APIs:
* Would a new engineer understand this? (pick good names)
* What might version 2 look like? (name for org, not school/district)
* Model the data not endpoints/rpc calls (instead of flattening data into UI fields, e.g. storyAttachmentTitle, which means nothing in the real world, expose the product pointer)
* Will this work for all future clients?
* What if the implementation changes?
* do as little as possible in the graphql server itself (dan schafer 2016 talk)

how to build products:
* pick the biggest, most important problem, and drive priorities from that.
* graphql was built by product people, to solve product problems
* don't be beholden to existing best practices
* have a first client to drive concrete needs--embed on their team
* allow incremental adoption, try before you buy.
* evolve, don't rewrite. if your framework requires a rewrite, that is a bad sign.
* yagni, burden of proof is on new tools to prove they are worth investment.
* designers (dreamers) need editors (skeptics)
* software is about communication
* don't open source too early. too many users too soon can be bad.
* encourage taking measured risks (vs. tendency to buckle down and "do what works")
* trust your experienced people
5 weeks ago
Fast and Easy Pickled Onion | Recipe | ChefSteps
1 Red onion, large
300g Red wine vinegar, or vinegar of your choice
300g Water
60g Sugar
20g Salt
2g Chili flake
2g Caraway seed

Soak 1 hour, drain.
6 weeks ago
I 'cracked' the sous vide hard boiled egg. Test my method out. I think it will be your go-to. : sousvide
185F for 10m (warm) - 12m (frig cold).
158F for 30m.
Ice bath if need cold.

2nd protein in egg whites sets at 180F, hence 185F for 10m.
Egg yolks develop sulfur smells at 170F, so limit the time over 170F.
6 weeks ago
The Art of Aeropress: Make 10 Kinds of Coffee Like Pro Baristas
Coffee: 22 grams
Grind Size: Setting 4 on Handground
Water: 260 grams at 203F
Water-to-Coffee Ratio: 12:1
Brew Time: 3:30
recipes  coffee  aeropress 
6 weeks ago
framework for writing jdbc drivers, sql parser, etc
execute jdbc queries against in-memory domain objects
programming  java 
6 weeks ago
How to GET a Cup of Coffee
kingdom of nouns-ish, with a purist HATEOS approach
programming  rest 
6 weeks ago
Swift 4 KeyPaths and You - klundberg.com
let kp = \Person.address?.fullAddress // returns WritableKeyPath<Person, String?>
6 weeks ago
Startup Interviewing is Fucked
Build something real together. The very act of doing that entirely changes the power dynamic; I cannot stress that enough. Whereas previously you had someone struggling to find out a secret only you were initially privy to, you’re now working together on a problem neither of you have a firm answer to yet. Before it was adversarial; now it’s collaborative.
6 weeks ago
proposal/24301-versioned-go.md at master · golang/proposal
Adopt semantic import versioning, in which each major version has a distinct import path. Specifically, an import path contains a module path, a version number, and the the path to a specific package inside the module.
7 weeks ago
What Happens If Your JWT Is Stolen? | Okta Developer
Tokens can be less secure than user/pass because they bypass 2FA. User-side JavaScript shouldn't have/need the token, use server-side cookies.
7 weeks ago
Service mesh data plane vs. control plane – Envoy Proxy
Ultimately, the goal of a control plane is to set policy that will eventually be enacted by the data plane.
8 weeks ago
Fibonacci Hashing: The Optimization that the World Forgot (or: a Better Alternative to Integer Modulo) | Probably Dance
If you already have a good hash, then mapping large number to small slots is a separate concern.
8 weeks ago
[strcat] : rust
This project is/was the largest single activity of my adult working life. All I wanted was for it to be done, to ship; we'd scoped, planned, slipped and given-up on plans for a 1.0 "sometime this year" every year since launch. Every day involved another round of intense pressure to meet the contradictory demands of absorbing advanced features from C++/Lisp/Haskell/Scala/Cyclone, pursuing a "fastest in the world" performance target, paying off technical debt for all the mistakes we'd made thus far, maintaining internal consistency and correctness, and stabilizing and shipping a finished product on some plausible timetable.
9 weeks ago
Hasselback Potato Gratin Recipe | Serious Eats
Looks easy: potatoes, sliced on mandolin, with cream and cheese.
9 weeks ago
A ‘Cash Cow’ is on the Agenda – Drew McCormack – Medium
freemium: in-app purchases buys all features released from now+1 year. you keep those features (+ bug fixes) for life. any new features released after now+1 year requires a new IAP.
9 weeks ago
node.js - How do I override nested dependencies with `yarn`? - Stack Overflow
But in the docs to yarn --flat I found a reference to a "resolutions" block that can go in package.json:

"resolutions": {
"package-a": "2.0.0",
"package-b": "5.0.0",
"package-c": "1.5.2"
9 weeks ago
React Element and ElementClass Declaration Issue · Issue #20350 · DefinitelyTyped/DefinitelyTyped
The yarn locking algorithm sometimes resolves your packages with duplicates.
It does so consistently when doing yarn upgrade with a package that is also a sub-dependency of another package.
9 weeks ago
Chatbots were the next big thing: what happened? | Hacker News
It’s just like why all voice interfaces are shitty: no one has any idea what the thing can or cannot do. They have a hidden user experience but the interface makes it feel like you’re talking to a human, but it’s so far from being a human.
These interfaces are almost like a dark pattern because of how bad they are.
9 weeks ago
SparkToro Raised a Very Unusual Round of Funding & We're Open-Sourcing Our Docs | SparkToro
Let me be super-clear about what we’re trying to build: an exciting, high-growth, high quality company that some venture investors might be excited to be part of… BUT, one that preserves the option to do things that wouldn’t fit with the outcomes venture investors need.

* For any year, have option to distribute profits or reinvest
* All profits to go investors until they get their original investment back
* Salaries must stay ~at-market until investors get their investment back
9 weeks ago
DSL Platform – Domain-Driven Design
DDD DSL with aggregates, events, reports, codegen's to java/c#. scored highly on benchmarks as revenj
9 weeks ago
« earlier      
accounting advertising agile ai ajax algorithms amg android architecture art audio aws backup banking bizo bodybuilding boo books bugs business c# cache carpet cars chairs charts clothing coffee colors communication competitors cooking couchdb css cygwin dabbledb database del.icio.us design design/sparklines designers documentation drugs dvr eclipse ecommerce economics education email engineering exercise filetype:gif filetype:pdf finance firefox fitnesse flash flickr flute flute/discussion flute/ff flute/music flute/performances flute/used fonts food forbes freebsd furniture fuse games gardening gifts gis git go google government graphql grills grpc gtd guns guns/suppressor gwt gwt/bugs hadoop hardware health history hosting hotkey house/tables household html html/editor http humor i3 ie imaging interviews investing iphone ipod java java/gui java/jta java/multicast javascript jquery js js/jquery jsr168 jta keto keyboard knives labels laszlo lifting linux mac management markdown marketing math mealkits media:document media:image medicine memcache memory memory/apps messaging methodology microservices misc mom motivation music mvcc netty networking oauth office omaha orm os outlook outsourcing parenting parsing patents patterns performance philosophy photography photos photos/libraries php physics pm pocketpc podcast politics postgresql ppc presentation productivity progamming programming psychology python quickbooks quotes ra rails react realestate recipes regex religion remodeling remote research rest reviews rfc richclient richclient/javascript rowing rss ruby running s3 saas sales saunas scala scalability scheduler science scm scoliosis scrum security seo shipping shopify sleep smalltalk soap sousvide spark speech sports sql ssh ssl statistics stocks svn swift tags tapestry technology tempagency testing thinking thinkpad threads timetracking tools toread trac travel tvs typescript ubuntu ui uml unix usecases ux vc video vim violin webdav wiki win32 windows wmii writing xml xmonad xp yc

Copy this bookmark: