Kevin Profile
Kevin

@typedarray

1,032
Followers
598
Following
134
Media
1,278
Statuses

Building @ponder_sh . EVM, TypeScript, open-source enjoyer

Brooklyn, NY
Joined August 2021
Don't wanna be here? Send us removal request.
Pinned Tweet
@typedarray
Kevin
6 months
Introducing Ponder - an open-source backend framework for crypto apps focused on developer experience and performance. npm create ponder With Ponder, you can rapidly build an API that serves custom data from smart contracts on any EVM blockchain.
Tweet media one
26
55
416
@typedarray
Kevin
11 months
@sergeykarayev we need to turn off unix time. it's the only way
2
1
141
@typedarray
Kevin
10 months
Excited to see another app powered by Ponder in production @basepaint_xyz Ponder is a great fit for @BuildOnBase apps. I just synced the BasePaint contract in ~8 seconds on my local machine using the public Base RPC endpoint
Tweet media one
@brian_armstrong
Brian Armstrong
10 months
Just minted Day 1 on @basepaint_xyz ! Dozens of pixel artists made this together on the blockchain. Minting is open only for 24h
121
257
718
2
8
52
@typedarray
Kevin
3 years
I built a game engine based on @wizards_magic for @0xAdventures cards. Next up: multiplayer, on-chain rewards, UI/UX improvements
3
7
46
@typedarray
Kevin
3 years
ok i did it,,, this is Pouncival, a 2017 MoonCat (day two) ⁦⁦ @ponderware ⁩ ⁦ @jacksondame ⁩ ⁦ @mooncatrescue @sothebys
5
6
41
@typedarray
Kevin
4 months
Excited to release Ponder 0.2.0, which focuses on performance for large apps. → Concurrent indexing (automatic ~20% speedup for most apps) → Cursor pagination for the GraphQL API → New p.hex() column type Details in thread ↓
1
7
38
@typedarray
Kevin
2 years
@companioninabox is an awesome web3 project in a vast ocean of shit, and it's not even close to minted out yet sorry for shilling, just had to say something lol
2
2
36
@typedarray
Kevin
6 months
Write your indexing logic once, and Ponder will use it to process raw logs from multiple chains. If you happen to need chain-specific logic, you can write if (context .network.chainId === 1) { ... } Excited to see what else people build with multi-chain indexing
@abstractooor
konradkopp.eth
6 months
Indexing is still a pain for smart accounts. I played around with @ponder_sh some more today and built a pretty simple ERC-4337 multi-chain indexer: To get it up and running you only need to provide the relevant rpc urls and start syncing - even if you're
3
7
72
3
2
33
@typedarray
Kevin
11 months
Easy 1) Import JSON files as const in typescript 2) Proper pagination of eth_getLogs requests 3) JSON serialization of BigInt This is obvious to those paying attention
@yezhang1998
Ye Zhang 📜
11 months
What are the top three fundamental problems in blockchain that haven't been solved, preventing the onboarding of the next billion users?
30
5
57
6
0
33
@typedarray
Kevin
2 years
"NFT floor voucher" is a fun idea. say i want to give a @crypto_coven as a gift, but i would like the recipient to be able to choose their witch
6
0
32
@typedarray
Kevin
11 months
Non-news: Ponder supports Zora Ponder works with any EVM chain, even if it was just created moments ago - all you need is an RPC URL. This demo uses Zora's public RPC URL ()
1
1
28
@typedarray
Kevin
3 years
i'm sorry it had to be done @TINY83_nft
Tweet media one
2
4
27
@typedarray
Kevin
3 years
also here's a gist for anyone who wants to mint their own @TINY83_nft art with arbitrary pixels :D
6
5
24
@typedarray
Kevin
6 months
Most crypto apps need a traditional web backend. Existing tools at this layer of the stack fall short on developer experience, flexibility, and performance. We built Ponder to solve these problems. Check out our blog post:
1
2
26
@typedarray
Kevin
9 months
Hosting a Ponder meetup in NY on Wednesday! Come chat about crypto app development, TypeScript x Ethereum, open-source + anything you're working on or excited about
1
2
25
@typedarray
Kevin
7 months
If you try @ponder_sh and have a bad experience, please get in touch (open an issue, join the telegram, tweet about it, etc). We will do whatever we can to unblock you, and improve the experience for the next new user.
@jacek0x
Jacek
7 months
Quick update: It looks like @ponder isn't ready for Windows prime time, but WSL on Windows works without any issues. Awesome! Thanks @typedarray .
1
0
2
2
0
23
@typedarray
Kevin
11 months
Very pleased with Ponder's test suite these days. Runs in 12s, no flakes, no retries, catches regressions all the time This includes unit tests, service-level tests, and end-to-end tests running against a mainnet fork using anvil.js (thanks @thefubhy !)
Tweet media one
3
0
23
@typedarray
Kevin
1 year
`eth_getLogs` requests that specify a blockHash should cost fewer RPC credits than requests using fromBlock/toBlock it's a constant vs linear compute/io cost for the node (see reth implementation here)
3
0
20
@typedarray
Kevin
10 months
Tweet media one
0
0
20
@typedarray
Kevin
6 months
Slow feedback loops suck. We designed Ponder with performance in mind from the very beginning. These benchmarks are encouraging, and there are still huge opportunities for improvement.
Tweet media one
2
2
21
@typedarray
Kevin
8 months
Factory contract support has been achieved internally
1
0
18
@typedarray
Kevin
1 year
first look at what i've been building the past few months. more soon!
@defdao
DΞF
1 year
Def Demos got a sneak peak at some of the work @0xOlias is doing with Ponder, a developer friendly take at indexing!
0
4
24
0
1
19
@typedarray
Kevin
6 months
Want to work on Ponder? We’re hiring founding engineers in New York City to build the framework-defined infrastructure company for crypto. If interested, send us an email (jobs @ponder .sh) with a link to something you’ve built.
0
1
20
@typedarray
Kevin
1 year
consistent 2 second block times is an underrated treat of the bedrock upgrade. it makes etherscan much easier to use/understand (and ponder apps using optimism will now sync even faster 🤓)
Tweet media one
1
3
18
@typedarray
Kevin
2 years
took 2 days off twitter
Tweet media one
2
0
15
@typedarray
Kevin
1 year
@jarredsumner the message doesn't make it clear that it loaded the .env imo, it should be more explicit like [0.04ms] using '.env' at the moment it kinda looks like a warning message, or like .env is the file being ran
0
0
16
@typedarray
Kevin
1 year
ponder now has much better support for proxy contracts
1
1
16
@typedarray
Kevin
11 months
@gakonst Ponder gets this done in ~half the time of reth
3
1
16
@typedarray
Kevin
10 months
Thank you eth_getLogs
Tweet media one
2
0
15
@typedarray
Kevin
10 months
What are you waiting for, anon? I'll help you decide on a first issue/mini project, answer questions, and get your work across the line. Under development: - Metrics (Prometheus/Grafana) - Benchmarks - ORM API improvements - JS runtime stuff (ESM, Bun)
@Slokh
Kartik
10 months
Fixed a bug in @ponder_sh tonight and I gotta say contributing was so intuitive. Great developer experience.
1
0
4
0
1
15
@typedarray
Kevin
6 months
Ponder is built for application developers. Your code runs in a JavaScript runtime (Node.js) where you can import NPM packages and make network requests. It’s easy to do things that are painful in environments like WebAssembly sandboxes, SQL engines, and EVM runtimes
1
0
15
@typedarray
Kevin
5 months
Very cool! Will gladly help anyone who wants to pick up this idea LLM contributor friendliness is an underrated reason to use well-documented open-source tools vs homegrown patterns & APIs
@DennisonBertram
Dennison is on farcaster
5 months
Created a really ugly ChatGPT tool last night that takes your smart contracts and generates a complete GraphQL indexer using @ponder_sh Now, because I've got no time, I'm looking for someone to flesh this baby out. @dabit3 it can only be you. (Or anyone, but really, you)
5
2
24
2
0
14
@typedarray
Kevin
1 year
i love docs. roast these docs
@gakonst
Georgios Konstantopoulos
1 year
writing docs starts as a chore but then you see how beautiful the thing starts looking and then you cant stop
2
3
69
2
0
14
@typedarray
Kevin
10 months
Ponder used to be plagued by database-specific bugs. Now, the tests run against both SQLite and Postgres ("database" is a GH Action matrix variable) IMO, mocking the db is a trap. If you want stability, run tests against the same db software that's used in prod
Tweet media one
@kentcdodds
Kent C. Dodds 🌌
10 months
Using SQLite gives you superpowers in so many ways. Testing is one of them. Even your lower-level tests can run against a real database with no mocking necessary (using their own instance or even an in-memory version). And they're still *very* fast. So cool.
33
18
478
4
1
14
@typedarray
Kevin
11 months
@thekitze I do it this way. Subtle nudge to use pnpm 😎
Tweet media one
1
0
14
@typedarray
Kevin
6 months
Ponder’s dev server keeps you productive and unblocked while you build your app. - Hot reload on file changes - Strong types & autocomplete with no build step - Descriptive error logs
1
0
15
@typedarray
Kevin
11 months
You either die a Unix-philosophy developer tool or live long enough to see yourself become a SaaS provider for wallet startups
1
0
12
@typedarray
Kevin
4 months
New in Ponder this week (as of 0.2.5) - Better realtime sync algorithm (~65% less RPC usage on fast chains like Arbitrum) - New `Schema` utility type - Fixed several concurrent indexing bugs Quick devlog:
4
3
24
@typedarray
Kevin
11 months
Solidity events should never have been called events - They cannot be "handled" onchain; contracts are not actually event emitters - They cost gas and are stored forever - The opcodes are LOG{0-4} - JSON-RPC methods use "log" They're (typed) logs. They should be called... logs
1
0
13
@typedarray
Kevin
1 year
i'm in the generation of react devs that grew up with hooks but not server components. like the class components generation before me, i will do my duty and complain about server components for ~3 more years, then capitulate.
2
0
12
@typedarray
Kevin
1 year
Tweet media one
1
0
12
@typedarray
Kevin
5 months
My favorite nugget in this release is discriminating overloaded event signatures at the type-level It's a subtle but surprisingly common edge case
Tweet media one
@kyscott18
kyle
5 months
Ponder's "createConfig" types got an upgrade in version 0.1.5! TypeScript language server now displays all possible values for a property, derived from the contract's abi.
Tweet media one
1
1
14
0
0
12
@typedarray
Kevin
1 year
the world if event logs returned by the standard RPC included block timestamp
Tweet media one
2
0
10
@typedarray
Kevin
10 months
🚂🚂🚂
@1ofthemanymatts
one of the many matts
10 months
ponder hype train
0
2
12
1
0
10
@typedarray
Kevin
10 months
~4 hours
Tweet media one
Tweet media two
2
0
10
@typedarray
Kevin
10 months
@GalloDaSballo eth_getLogs({ topics: [ keccak256("Upgraded(indexed string)"), implementation_address ] }) Assumes you only care about EIP-1967 compliant proxies. Use an RPC provider that has no limit on eth_getLogs block ranges. Alchemy Composer is great for this kind of task.
2
1
10
@typedarray
Kevin
2 years
my latest crypto gaming project ( @ethereumplays ) is live on the goerli/mumbai testnets dm me if you'd like to try it out!
1
0
10
@typedarray
Kevin
9 months
@0xPenryn In priority order, IMO: 1) One-liner / why <package> 2) Quickstart 3/4) Detailed guides for ~3 most common use cases 4/3) Real example projects 5) API reference After reading 1, an ideal user should feel seen, and get increasingly sold as they explore down the list
1
0
10
@typedarray
Kevin
1 year
other takeaways: 1) using viem will make you a better ethereum dev, because it uses standard ethereum terminology & concepts 2) the utility functions are a dream. if u start doing something hacky, stop, there's probably a utility for it 3) abitype is the secret sauce
2
2
9
@typedarray
Kevin
5 months
TIL 1) An eth_getLogs request to a Nethermind node for a pruned block range returns []. I was expecting an error. 2) An eth_getLogs request to Ankr's public RPC returns [] if the target log has topics = ["0xa"] and you specify ["0xa", null]. I think this is a bug?
Tweet media one
4
0
9
@typedarray
Kevin
1 year
the world if `eth_getBlocksByHash` (plural) were part of the standard RPC API
Tweet media one
2
0
9
@typedarray
Kevin
11 months
In a similar vein, Ponder uses viem's types wherever applicable, e.g. the block, transaction, and log objects passed to event handler functions, and the cache-enabled read-only contract instances
@vex_0x
vex
11 months
Shared primitive types between REVM <> RETH <> Foundry with Alloy is beyond hype
1
2
54
2
1
9
@typedarray
Kevin
2 years
i want @nextjs to add an opinionated sql db connector & migration workflow next with db stuff = rails for gen z
2
1
9
@typedarray
Kevin
2 years
full list of the nfts i've minted since november 12th: Corruption(s*) Legend Maps Poolsuite Bent (Art Blocks Curated) Crypto Coven Terraforms Zorbs by Zora mannys game Gallery Membership Card Dead Ringers - Edition Companion-in-a-Box mannyDAO - Exodia OKPC
0
0
9
@typedarray
Kevin
4 months
ABIType is good, use it Thanks @wevm_dev 💛
@wevm_dev
wevm
4 months
ABIType is now v1! 🪨 Hardened by M+ downloads/month in usage 🟢 Test suite running against many TS versions 🎚️ Robust type benchmarking with Attest 📖 New docs site powered by Vocs ABIType powers incredible type inference and DX, for Viem, Wagmi, and projects, like @ponder_sh
Tweet media one
3
3
48
0
1
8
@typedarray
Kevin
1 year
@0xCygaar // prettier-ignore an understatement
0
0
8
@typedarray
Kevin
11 months
crypto infra devs crypto app devs
Tweet media one
1
1
8
@typedarray
Kevin
1 year
@moo9000 sounds like these shitcoins are not erc20-compliant?
Tweet media one
1
0
6
@typedarray
Kevin
2 years
more generative watercolor shit code here:
Tweet media one
Tweet media two
2
0
8
@typedarray
Kevin
10 months
Big fan of tsup for server-side Node apps that aren't using a framework. This dev script offers an experience very similar to `vite dev`/`next dev`.
Tweet media one
1
0
8
@typedarray
Kevin
7 months
you need to be vite maxxing. you need to be replacing modules, hot. web framework? that's a plugin. performance, stability, and community. you need to be rendering server-side. ecmascript, modules. you need to be transforming, loading, plugging. vite dot config dot ts. you ne
@remix_run
Remix 💿
7 months
Today we are excited to share our new Vite plugin available in Remix v2.2.0! Vite’s lightning fast DX ⚡️ means 10x faster HMR 5x faster HDR We are also happy to announce that Remix is officially sponsoring Vite! Read more about our announcement here
29
201
1K
2
0
8
@typedarray
Kevin
1 year
gm babe, hope you figure out how to decentralize your sequencer today. i know it's been bothering u and i just want u to be happy ❤️
0
0
7
@typedarray
Kevin
11 months
Anyone know of a real/"serious" EVM contract that uses overloaded events? E.g. (contrived): event Burn(uint256 amount) event Burn(uint256 amount, address account) Ponder will support this later today - just want a real-life example to demonstrate in the docs.
2
1
7
@typedarray
Kevin
7 months
If .DS_Store is gitignored, you launched too late
1
0
7
@typedarray
Kevin
7 months
Semver failed because there's no level for "big vibe shift that's not strictly related to the public API", like major announcements and milestones I conclude that the ideal versioning scheme is VIBE.MAJOR.MINOR (Backward compatible bug fixes are MINOR)
Tweet media one
0
0
7
@typedarray
Kevin
2 years
@kelseyhightower yup! and my stance is that using "centralized" providers of commoditized infra to host nodes of decentralized blockchains is not risky or problematic.
3
0
7
@typedarray
Kevin
3 years
@smsunarto high quality contrived shitpost
1
0
7
@typedarray
Kevin
1 year
this is an announcement that all future tweets from this account will include the string "rpc" (case-insensitive) 🫡
1
0
7
@typedarray
Kevin
2 years
@dievardump @liamihorne it's 100% this. get an alchemy/infura/pocket key for your project, allowlist the domain, and use that as your provider. only use a connector to create a signer once the user attempts to sign something.
1
0
6
@typedarray
Kevin
2 years
i want a mobile app that displays active governance votes that i'm eligible to participate in should work seamlessly for both on/off-chain voting, support delegation, and have configurable push notifications
1
0
7
@typedarray
Kevin
5 months
@mattpocockuk Excited to adopt this, but unfortunately your example of "#/x" is not currently possible. AFAIK "#/*" is not a valid prefix, it has to be something like " #src /*" which is very ugly
2
0
7
@typedarray
Kevin
4 months
Ponder's column type for Ethereum addresses should be called
p.bytes()
8
p.string()
8
p.hex()
23
3
1
6
@typedarray
Kevin
9 months
@0xz80 Repeated deployments is still a surprisingly common dev workflow for ensuring contracts play nice with indexing providers (eg the graph because it's very difficult to run locally) Usually to a testnet though lol
0
0
6
@typedarray
Kevin
5 months
Many bugs fixed today thanks to @kyscott18
@ponder_sh
Ponder
5 months
Ponder v0.1.2 - Fixed a bug where indexing never started for some multi-chain apps - Removed duplicate server health logs - Improved config validation error messages
1
1
14
0
0
6
@typedarray
Kevin
2 years
@frolic @scotato @shahruz @cj_pais fast mouse is possibly my favorite okpc
0
0
6
@typedarray
Kevin
5 months
New utility types are a major quality of life improvement for large Ponder apps, kudos @kyscott18 for the TypeScript wizardry
@ponder_sh
Ponder
5 months
Ponder v0.1.7 - New generic utility types that make it easier to type helper functions, e.g. Context<"Contract:Event"> - Create Ponder now uses viem/chains for block explorer API URLs which fixes the Etherscan template for ~100 chains - Bug fixes Thanks to 4 contributors!
Tweet media one
0
1
14
0
0
6
@typedarray
Kevin
10 months
This is too much Boolean algebra for my smooth brain
Tweet media one
0
0
6
@typedarray
Kevin
1 year
@frolic the world if every package.json had comments explaining each field
Tweet media one
1
0
6
@typedarray
Kevin
2 years
@gakonst not a vscode plugin but @w1nt3r_eth built hot-chain-svg
0
0
6
@typedarray
Kevin
10 months
@GalloDaSballo Think it can be done using traces trace_filter(toAddress: impl_address) .filter(t => t.action.callType === "delegatecall") .map(t => t.action.from) .unique() Then use eth_getCode to confirm that the bytecode of the contract matches EIP-1167
0
0
6
@typedarray
Kevin
1 year
mud is cool
@primodiumgame
Primodium
1 year
Just launched Primodium, a game similar to Factorio, but fully on-chain and multiplayer (and free):
Tweet media one
25
61
326
1
0
6
@typedarray
Kevin
1 year
dark mode responsive diagrams on . this was definitely undoubtedly certainly a good use of ~1 hour tonight
1
0
6
@typedarray
Kevin
2 years
why doesn't your NFT project have a bespoke website that aggregates liquidity across all major marketplaces, anon?
@reservoir0x
Reservoir
2 years
Introducing ReservoirKit 🧰 An open-source react package for buying, selling and managing NFTs. 🤝 Inspired by @rainbowdotme 🌈 🤝 Built with @wagmi_sh 🛠
Tweet media one
4
23
105
0
0
5
@typedarray
Kevin
1 year
not quite
Tweet media one
2
0
6
@typedarray
Kevin
2 years
so its looking like the IRS is *not* down to just hug this one out
1
1
6
@typedarray
Kevin
3 years
🌞 📸 gm me 0xd17d1BcDe2A28AaDe2b3B5012f93b8B079d0E86B #gmcam via @internetcamera pls i need friends
3
0
6
@typedarray
Kevin
5 months
Using eth_uninstallFilter is a myth
@drydenwtbrown
Dryden Brown
5 months
Checking out of hotels is a myth You literally don’t have to do it Just leave; nothing different happens
631
947
24K
0
0
6
@typedarray
Kevin
2 years
@kelseyhightower got it. re: nodes, cloud providers present minimal risk. it doesn't matter to me where nodes are hosted as long as the network has sufficient operator decentralization and client diversity. only ethereum mainnet (and maybe bitcoin) meet this bar atm.
1
0
6
@typedarray
Kevin
11 months
That's against SQLite, against Postgres takes ~45s The entire CI matrix usually takes about 3 minutes
Tweet media one
1
0
6
@typedarray
Kevin
10 months
Ponder on bun soon
@jarredsumner
Jarred Sumner
10 months
In the next version of bun install you can put workspace packages in "dependencies" with the version from npm. locally, it uses the workspace version
Tweet media one
6
4
68
0
0
5
@typedarray
Kevin
9 months
@sammdec @ponder_sh Great question. At the moment, no - you would need to fetch the entire list and get the length client-side. Though, we are working towards making the API layer fully customizable, so you can write typescript route handlers that query the indexed database directly.
3
0
5
@typedarray
Kevin
3 years
@NaN_DAO_ the inconsistent capitalization may have gone too far
1
0
5
@typedarray
Kevin
3 years
0
1
5
@typedarray
Kevin
1 year
getting closer to a stable release for ponder
Tweet media one
0
1
5
@typedarray
Kevin
11 months
There are dozens of us that still use TypeScript. Dozens!
1
0
5
@typedarray
Kevin
2 years
bad → good alchemy/infura → @POKTnetwork opensea API → ??? is anyone building a protocol for decentralized NFT indexing/caching?
2
0
3
@typedarray
Kevin
2 years
just finished fully migrating to @wagmi_sh for @ethereumplays (an app that reads/writes to 2 chains simultaneously). the chain-aware provider setup makes this super easy - just pass chainId as config to any hook, and requests will be routed to the correct RPC endpoint.
1
0
5
@typedarray
Kevin
2 years
mmm this is very good software. thanks @awkweb @viamirror !!!
@awkweb
awkweb
2 years
npm i wagmi React Hooks library for Ethereum
46
129
770
0
1
5