56,966 blogs · [ { "id": "01a087df-6be1-70da-bb83-27078505cb06", "title": "Building a Second Brain with Obsidian and AI", "url": "https://shawntabrizi.com/blog/building-a-second-brain-with-obsidian-and-ai/", "published_at": "2026-03-27T00:00:00+00:00" }, { "id": "01a087df-6be1-70da-bb83-270785b8dd71", "title": "The Future of Web3", "url": "https://shawntabrizi.com/blog/the-future-of-web3/", "published_at": "2025-02-05T00:00:00+00:00" }, { "id": "01a087df-6be1-70da-bb83-2707861f1a88", "title": "Make Kusama Chaotic Again", "url": "https://shawntabrizi.com/blog/make-kusama-chaotic-again/", "published_at": "2024-12-12T00:00:00+00:00" }, { "id": "01a087df-6be1-70da-bb83-2707865380b4", "title": "The Polkadot Cloud", "url": "https://shawntabrizi.com/blog/the-polkadot-cloud/", "published_at": "2024-10-30T00:00:00+00:00" }, { "id": "01a087df-6be1-70da-bb83-270786dbdeca", "title": "The Role of the Polkadot Treasury", "url": "https://shawntabrizi.com/blog/the-role-of-the-polkadot-treasury/", "published_at": "2024-07-08T00:00:00+00:00" }, { "id": "01a087df-6be1-70da-bb83-270786e602f9", "title": "Disposable Parachains", "url": "https://shawntabrizi.com/blog/disposable-parachains/", "published_at": "2024-01-20T00:00:00+00:00" }, { "id": "01a087df-6be1-70da-bb83-270787de91cd", "title": "Polkadot Workshop @ UPR Mayaguez", "url": "https://shawntabrizi.com/blog/polkadot-workshop-upr-mayaguez/", "published_at": "2023-12-08T00:00:00+00:00" }, { "id": "01a087df-6be1-70da-bb83-270788c6b5de", "title": "9 Ideas for the Decentralized Future of Polkadot", "url": "https://shawntabrizi.com/blog/9-ideas-for-decentralized-future/", "published_at": "2023-11-20T00:00:00+00:00" }, { "id": "01a087df-6be1-70da-bb83-270789643f04", "title": "Tips for New FRAME Developers", "url": "https://shawntabrizi.com/blog/tips-for-new-frame-devs/", "published_at": "2023-08-09T00:00:00+00:00" }, { "id": "01a087df-6be2-70e4-956f-49af6351e2d5", "title": "Does Shared Security Improve Interoperability?", "url": "https://shawntabrizi.com/blog/shared-security-and-interoperability/", "published_at": "2023-05-18T00:00:00+00:00" }, { "id": "01a087df-6be2-70e4-956f-49af63e3715c", "title": "Polkadot Competitive Research Proposal", "url": "https://shawntabrizi.com/blog/polkadot-competitive-research/", "published_at": "2023-04-05T00:00:00+00:00" }, { "id": "01a087df-6be2-70e4-956f-49af64907850", "title": "A Better Treasury System", "url": "https://shawntabrizi.com/blog/a-better-treasury-system/", "published_at": "2022-09-04T00:00:00+00:00" }, { "id": "01a087df-6be2-70e4-956f-49af64ed3ad8", "title": "The Merge of ink! and FRAME", "url": "https://shawntabrizi.com/blog/the-merge-of-ink-and-frame/", "published_at": "2022-08-11T00:00:00+00:00" }, { "id": "01a087df-6be2-70e4-956f-49af65ded50e", "title": "Web3 Reading List", "url": "https://shawntabrizi.com/blog/web3-reading-list/", "published_at": "2022-07-14T00:00:00+00:00" }, { "id": "01a087df-6be2-70e4-956f-49af66b808fa", "title": "Transparent Keys in Substrate", "url": "https://shawntabrizi.com/blog/transparent-keys-in-substrate/", "published_at": "2020-03-29T00:00:00+00:00" }, { "id": "01a087df-6be2-70e4-956f-49af6740af5c", "title": "Substrate Weights and Fees", "url": "https://shawntabrizi.com/blog/substrate-weights-and-fees/", "published_at": "2020-02-27T00:00:00+00:00" }, { "id": "01a087df-6be2-70e4-956f-49af681e87f3", "title": "Porting Web3.js to Polkadot.js", "url": "https://shawntabrizi.com/blog/porting-web3-js-to-polkadot-js/", "published_at": "2020-01-12T00:00:00+00:00" }, { "id": "01a087df-6be2-70e4-956f-49af68a82211", "title": "Substrate Storage Deep Dive", "url": "https://shawntabrizi.com/blog/substrate-storage-deep-dive/", "published_at": "2019-12-09T00:00:00+00:00" }, { "id": "01a087df-6be2-70e4-956f-49af68dcb88e", "title": "What is Substrate?", "url": "https://shawntabrizi.com/blog/what-is-substrate/", "published_at": "2019-09-29T00:00:00+00:00" }, { "id": "01a087df-6be2-70e4-956f-49af68e1ee85", "title": "Substrate Feeless Token Factory", "url": "https://shawntabrizi.com/blog/substrate-feeless-token-factory/", "published_at": "2019-08-28T00:00:00+00:00" }, { "id": "01a087df-6be2-70e4-956f-49af68f2a260", "title": "Querying Substrate Storage via RPC", "url": "https://shawntabrizi.com/blog/interacting-with-the-substrate-rpc-endpoint/", "published_at": "2019-07-28T00:00:00+00:00" }, { "id": "01a087df-6be2-70e4-956f-49af695fa4fb", "title": "Extending Substrate Runtime Modules", "url": "https://shawntabrizi.com/blog/extending-substrate-runtime-modules/", "published_at": "2019-06-27T00:00:00+00:00" }, { "id": "01a087df-6be2-70e4-956f-49af6a03c91b", "title": "Adding Fees to Your Substrate Runtime Module", "url": "https://shawntabrizi.com/blog/adding-fees-to-your-substrate-runtime-module/", "published_at": "2019-05-27T00:00:00+00:00" }, { "id": "01a087df-6be2-70e4-956f-49af6abc4428", "title": "Substrate Smart Contracts Workshop", "url": "https://shawntabrizi.com/blog/substrate-smart-contracts-workshop/", "published_at": "2019-04-28T00:00:00+00:00" }, { "id": "01a087df-6be2-70e4-956f-49af6b5fd1ee", "title": "The Sudo Story in Substrate", "url": "https://shawntabrizi.com/blog/the-sudo-story-in-substrate/", "published_at": "2019-03-14T00:00:00+00:00" }, { "id": "01a087df-6be2-70e4-956f-49af6c473176", "title": "Substrate at FOSDEM 2019", "url": "https://shawntabrizi.com/blog/substrate-at-fosdem-2019/", "published_at": "2019-02-11T00:00:00+00:00" }, { "id": "01a087df-6be2-70e4-956f-49af6cb0a9c2", "title": "CryptoKitties on Substrate", "url": "https://shawntabrizi.com/blog/cryptokitties-on-substrate/", "published_at": "2019-01-30T00:00:00+00:00" }, { "id": "01a087df-6be2-70e4-956f-49af6d4a838b", "title": "Proof of Existence Blockchain with Substrate", "url": "https://shawntabrizi.com/blog/proof-of-existence-blockchain-with-substrate/", "published_at": "2018-12-31T00:00:00+00:00" }, { "id": "01a087df-6be2-70e4-956f-49af6d4b3f61", "title": "Verify Ethereum Contracts Using Web3.js and Solc", "url": "https://shawntabrizi.com/blog/verify-ethereum-contracts-using-web3-js-and-solc/", "published_at": "2018-11-30T00:00:00+00:00" }, { "id": "01a087df-6be2-70e4-956f-49af6deb7cd7", "title": "Combining Rocket with Reqwest to Call an API with Rust", "url": "https://shawntabrizi.com/blog/combining-rocket-with-reqwest-to-call-an-api-with-rust/", "published_at": "2018-10-21T00:00:00+00:00" }, { "id": "01a087df-6be2-70e4-956f-49af6ee92348", "title": "Running Parity Substrate on Mac OS X", "url": "https://shawntabrizi.com/blog/running-parity-substrate-on-mac-os-x/", "published_at": "2018-10-11T00:00:00+00:00" }, { "id": "01a087df-6be2-70e4-956f-49af6f1ee8fe", "title": "4 Things I Learned in 4 Years at Microsoft", "url": "https://shawntabrizi.com/blog/4-things-i-learned-in-4-years-at-microsoft/", "published_at": "2018-09-27T00:00:00+00:00" }, { "id": "01a087df-6be2-70e4-956f-49af6f8774cb", "title": "Getting Twitter posts for Ethereum using an Oracle", "url": "https://shawntabrizi.com/blog/getting-twitter-posts-for-ethereum-using-an-oracle/", "published_at": "2018-08-26T00:00:00+00:00" }, { "id": "01a087df-6be2-70e4-956f-49af703a10e1", "title": "Building a Simple Sign-In Page with MSAL.js for Microsoft Identities", "url": "https://shawntabrizi.com/blog/building-a-simple-sign-in-page-with-msal-js-for-microsoft-identities/", "published_at": "2018-07-31T00:00:00+00:00" }, { "id": "01a087df-6be2-70e4-956f-49af7121afc2", "title": "Microsoft Identities on the Ethereum Blockchain", "url": "https://shawntabrizi.com/blog/microsoft-identities-on-the-ethereum-blockchain/", "published_at": "2018-06-30T00:00:00+00:00" }, { "id": "01a087df-6be2-70e4-956f-49af72145d46", "title": "Using Web3.js 1.0 Subscribe and Infura WebSockets to Visualize Ethereum Transactions", "url": "https://shawntabrizi.com/blog/using-web3-js-1-0-subscribe-and-infura-websockets-to-visualize-ethereum-transactions/", "published_at": "2018-05-24T00:00:00+00:00" }, { "id": "01a087df-6be2-70e4-956f-49af72e99c44", "title": "Shawn Notes: CryptoZombies Lessons 1 - 5 in Solidity", "url": "https://shawntabrizi.com/blog/shawn-notes-cryptozombies-lessons-1-5-in-solidity/", "published_at": "2018-04-23T00:00:00+00:00" }, { "id": "01a087df-6be2-70e4-956f-49af73d7c99f", "title": "Graphing ETH Balance History of an Ethereum Address using Parallel Asynchronous Requests in Web3.js", "url": "https://shawntabrizi.com/blog/graphing-eth-balance-history-of-an-ethereum-address-using-parallel-asynchronous-requests-in-web3-js/", "published_at": "2018-03-11T00:00:00+00:00" }, { "id": "01a087df-6be2-70e4-956f-49af743b3273", "title": "Set up Azure Service Health Alerts programmatically using PowerShell", "url": "https://shawntabrizi.com/blog/set-azure-service-health-alerts-programmatically-using-powershell/", "published_at": "2018-01-10T00:00:00+00:00" }, { "id": "01a087df-6be2-70e4-956f-49af74a93104", "title": "Programmatically fetch multiple APIs in parallel using async and await in JavaScript", "url": "https://shawntabrizi.com/blog/programmatically-fetch-multiple-apis-parallel-using-async-await-javascript/", "published_at": "2017-12-09T00:00:00+00:00" }, { "id": "01a087df-6be2-70e4-956f-49af758bc719", "title": "ethfolio: A client side app to show your Ethereum token distribution", "url": "https://shawntabrizi.com/blog/ethfolio-client-side-app-show-ethereum-token-distribution/", "published_at": "2017-12-04T00:00:00+00:00" }, { "id": "01a087df-6be2-70e4-956f-49af76429346", "title": "Making Web3.js work asynchronously with JavaScript Promises and await", "url": "https://shawntabrizi.com/blog/making-web3-js-work-asynchronously-javascript-promises-await/", "published_at": "2017-11-24T00:00:00+00:00" }, { "id": "01a087df-6be2-70e4-956f-49af76a7d1b7", "title": "Ethereum Token Contract ABI in Web3.js for ERC-20 and Human Standard Tokens", "url": "https://shawntabrizi.com/blog/ethereum-token-contract-abi-web3-erc-20-human-standard-tokens/", "published_at": "2017-11-08T00:00:00+00:00" }, { "id": "01a087df-6be2-70e4-956f-49af77191c63", "title": "Correcting the Ethereum and Web3.js \"Hello World\"", "url": "https://shawntabrizi.com/blog/correcting-ethereum-web3-js-hello-world/", "published_at": "2017-11-05T00:00:00+00:00" }, { "id": "01a087df-6be2-70e4-956f-49af7816d743", "title": "Ethereum and Web3.js \"Hello World\": Get the ETH Balance of an Ethereum Address", "url": "https://shawntabrizi.com/blog/ethereum-web3-js-hello-world-get-eth-balance-ethereum-address/", "published_at": "2017-11-02T00:00:00+00:00" }, { "id": "01a087df-6be2-70e4-956f-49af78df0ae6", "title": "Adding AAD Service Principal to the Company Administrator Role using the AAD PowerShell Module", "url": "https://shawntabrizi.com/blog/adding-aad-service-principal-company-administrator-role-using-aad-powershell-module/", "published_at": "2017-10-16T00:00:00+00:00" }, { "id": "01a087df-6be2-70e4-956f-49af798f0a15", "title": "Getting started with Ethereum Wallet", "url": "https://shawntabrizi.com/blog/getting-started-ethereum-wallet/", "published_at": "2017-10-16T00:00:00+00:00" }, { "id": "01a087df-6be2-70e4-956f-49af7a64a174", "title": "Common Microsoft Resources in Azure Active Directory", "url": "https://shawntabrizi.com/blog/common-microsoft-resources-azure-active-directory/", "published_at": "2017-09-20T00:00:00+00:00" }, { "id": "01a087df-6be2-70e4-956f-49af7af2994b", "title": "Refresh Tokens for Azure AD V2 Applications in Flask", "url": "https://shawntabrizi.com/blog/refresh-tokens-azure-ad-v2-applications-flask/", "published_at": "2017-08-16T00:00:00+00:00" }, { "id": "01a087df-6be2-70e4-956f-49af7b282611", "title": "Revoking Consent for Azure Active Directory Applications", "url": "https://shawntabrizi.com/blog/revoking-consent-azure-active-directory-applications/", "published_at": "2017-08-11T00:00:00+00:00" }, { "id": "01a087df-6be2-70e4-956f-49af7b935229", "title": "Scraping LinkedIn Topics and Skills Data", "url": "https://shawntabrizi.com/blog/scraping-linkedin-topics-skills-data/", "published_at": "2017-07-23T00:00:00+00:00" }, { "id": "01a087df-6be2-70e4-956f-49af7bdc636e", "title": "Clients and Tokens and Claims! Oh My!", "url": "https://shawntabrizi.com/blog/clients-tokens-claims-oh-my/", "published_at": "2017-07-16T00:00:00+00:00" }, { "id": "01a087df-6be2-70e4-956f-49af7beb6c1e", "title": "Customizing WordPress's Twenty Seventeen Theme", "url": "https://shawntabrizi.com/blog/customizing-wordpresss-twenty-seventeen-theme/", "published_at": "2017-07-13T00:00:00+00:00" }, { "id": "01a087df-6be2-70e4-956f-49af7c25fe33", "title": "Does Company \"X\" have an Azure Active Directory Tenant?", "url": "https://shawntabrizi.com/blog/does-company-x-have-an-azure-active-directory-tenant/", "published_at": "2017-07-12T00:00:00+00:00" }, { "id": "01a087df-6be2-70e4-956f-49af7c95c425", "title": "Secret APIs in Azure Active Directory and Azure Resource Manager", "url": "https://shawntabrizi.com/blog/secret-apis-in-azure-active-directory-and-azure-resource-manager/", "published_at": "2017-07-11T00:00:00+00:00" }, { "id": "01a087df-6be2-70e4-956f-49af7d003ee6", "title": "Azure AD Authentication with PowerShell and ADAL", "url": "https://shawntabrizi.com/blog/azure-ad-authentication-with-powershell-and-adal/", "published_at": "2017-07-09T00:00:00+00:00" }, { "id": "01a087df-6be2-70e4-956f-49af7df7d977", "title": "Decoding JWT Tokens", "url": "https://shawntabrizi.com/blog/decoding-jwt-tokens/", "published_at": "2017-07-05T00:00:00+00:00" }, { "id": "01a087df-6be2-70e4-956f-49af7e2340e4", "title": "Discovery through Experience", "url": "https://shawntabrizi.com/blog/discovery-through-experience/", "published_at": "2017-07-03T00:00:00+00:00" } ] posts Claim your blog
Back to shawntabrizi.com
Blog · corpus.blog/blogs/shawntabrizi.com/posts

shawntabrizi.com

shawntabrizi.com

2026

2025

2024

2023

2022

2020

2019

2018

2017