[{"type_of":"article","id":2804810,"title":"The Web's Missing Piece: How DID-Nostr Quietly Solves Social Portability","description":"After decades of platform lock-in, the first truly portable social graph standard has arrived. It's...","readable_publish_date":"Aug 28 '25","slug":"the-webs-missing-piece-how-did-nostr-quietly-solves-social-portability-1bg","path":"/melvincarvalho/the-webs-missing-piece-how-did-nostr-quietly-solves-social-portability-1bg","url":"https://dev.to/melvincarvalho/the-webs-missing-piece-how-did-nostr-quietly-solves-social-portability-1bg","comments_count":0,"public_reactions_count":1,"collection_id":null,"published_timestamp":"2025-08-28T09:13:13Z","language":"en","subforem_id":1,"positive_reactions_count":1,"cover_image":"https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhd9hm72idfolxgo0oah6.png","social_image":"https://media2.dev.to/dynamic/image/width=1000,height=500,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhd9hm72idfolxgo0oah6.png","canonical_url":"https://dev.to/melvincarvalho/the-webs-missing-piece-how-did-nostr-quietly-solves-social-portability-1bg","created_at":"2025-08-28T09:13:13Z","edited_at":"2025-08-28T09:31:09Z","crossposted_at":null,"published_at":"2025-08-28T09:13:13Z","last_comment_at":"2025-08-28T09:13:13Z","reading_time_minutes":7,"tag_list":["didnostr","did","nostr","decentralized"],"tags":"didnostr, did, nostr, decentralized","user":{"name":"Melvin Carvalho","username":"melvincarvalho","twitter_username":"melvincarvalho","github_username":"melvincarvalho","user_id":448014,"website_url":"https://melvincarvalho.com/#me","profile_image":"https://media2.dev.to/dynamic/image/width=640,height=640,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F448014%2F8c938ffb-fe97-4763-a32c-acb329fb32d1.jpg","profile_image_90":"https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F448014%2F8c938ffb-fe97-4763-a32c-acb329fb32d1.jpg"}},{"type_of":"article","id":2621326,"title":"Blocktrails: Smart-Contract Functionality - On Bitcoin, No Extra Token Needed","description":"Picture a relay-race baton hurtling around a track. Before each hand-off the runner stamps the baton...","readable_publish_date":"Jun 24 '25","slug":"blocktrails-smart-contract-functionality-on-bitcoin-no-extra-token-needed-amm","path":"/melvincarvalho/blocktrails-smart-contract-functionality-on-bitcoin-no-extra-token-needed-amm","url":"https://dev.to/melvincarvalho/blocktrails-smart-contract-functionality-on-bitcoin-no-extra-token-needed-amm","comments_count":0,"public_reactions_count":0,"collection_id":null,"published_timestamp":"2025-06-24T14:51:00Z","language":"en","subforem_id":1,"positive_reactions_count":0,"cover_image":"https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8z3irmkrxxyjuq20qpyc.png","social_image":"https://media2.dev.to/dynamic/image/width=1000,height=500,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8z3irmkrxxyjuq20qpyc.png","canonical_url":"https://dev.to/melvincarvalho/blocktrails-smart-contract-functionality-on-bitcoin-no-extra-token-needed-amm","created_at":"2025-06-24T14:51:04Z","edited_at":null,"crossposted_at":null,"published_at":"2025-06-24T14:51:00Z","last_comment_at":"2025-06-24T14:51:00Z","reading_time_minutes":3,"tag_list":["blocktrails","bitcoin","smartcontract","nostr"],"tags":"blocktrails, bitcoin, smartcontract, nostr","user":{"name":"Melvin Carvalho","username":"melvincarvalho","twitter_username":"melvincarvalho","github_username":"melvincarvalho","user_id":448014,"website_url":"https://melvincarvalho.com/#me","profile_image":"https://media2.dev.to/dynamic/image/width=640,height=640,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F448014%2F8c938ffb-fe97-4763-a32c-acb329fb32d1.jpg","profile_image_90":"https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F448014%2F8c938ffb-fe97-4763-a32c-acb329fb32d1.jpg"}},{"type_of":"article","id":2537542,"title":"🕶️ Introducing Shade: Taproot-Based Messaging in the Post-Surveillance Web","description":"“Freedom of speech requires freedom of whisper.”   We live in an era of networked everything — and...","readable_publish_date":"May 28 '25","slug":"introducing-shade-taproot-based-messaging-in-the-post-surveillance-web-hch","path":"/melvincarvalho/introducing-shade-taproot-based-messaging-in-the-post-surveillance-web-hch","url":"https://dev.to/melvincarvalho/introducing-shade-taproot-based-messaging-in-the-post-surveillance-web-hch","comments_count":0,"public_reactions_count":0,"collection_id":null,"published_timestamp":"2025-05-28T14:10:56Z","language":"en","subforem_id":1,"positive_reactions_count":0,"cover_image":"https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwwwa97itt6jtnxjybj8v.png","social_image":"https://media2.dev.to/dynamic/image/width=1000,height=500,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwwwa97itt6jtnxjybj8v.png","canonical_url":"https://dev.to/melvincarvalho/introducing-shade-taproot-based-messaging-in-the-post-surveillance-web-hch","created_at":"2025-05-28T14:10:58Z","edited_at":null,"crossposted_at":null,"published_at":"2025-05-28T14:10:56Z","last_comment_at":"2025-05-28T14:10:56Z","reading_time_minutes":2,"tag_list":[],"tags":"","user":{"name":"Melvin Carvalho","username":"melvincarvalho","twitter_username":"melvincarvalho","github_username":"melvincarvalho","user_id":448014,"website_url":"https://melvincarvalho.com/#me","profile_image":"https://media2.dev.to/dynamic/image/width=640,height=640,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F448014%2F8c938ffb-fe97-4763-a32c-acb329fb32d1.jpg","profile_image_90":"https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F448014%2F8c938ffb-fe97-4763-a32c-acb329fb32d1.jpg"}},{"type_of":"article","id":2498695,"title":"Threadlocks: One-Time Commitments with Bitcoin and Nostr","description":"What if you could make a promise, cryptographically bind it to Bitcoin, and close it forever with...","readable_publish_date":"May 18 '25","slug":"threadlocks-one-time-commitments-with-bitcoin-and-nostr-4803","path":"/melvincarvalho/threadlocks-one-time-commitments-with-bitcoin-and-nostr-4803","url":"https://dev.to/melvincarvalho/threadlocks-one-time-commitments-with-bitcoin-and-nostr-4803","comments_count":0,"public_reactions_count":0,"collection_id":null,"published_timestamp":"2025-05-18T09:14:36Z","language":"en","subforem_id":1,"positive_reactions_count":0,"cover_image":"https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F330qwcc4zpp8qnrdvwf4.png","social_image":"https://media2.dev.to/dynamic/image/width=1000,height=500,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F330qwcc4zpp8qnrdvwf4.png","canonical_url":"https://dev.to/melvincarvalho/threadlocks-one-time-commitments-with-bitcoin-and-nostr-4803","created_at":"2025-05-18T09:14:38Z","edited_at":null,"crossposted_at":null,"published_at":"2025-05-18T09:14:36Z","last_comment_at":"2025-05-18T09:14:36Z","reading_time_minutes":2,"tag_list":["nostr","bitcoin","smartcontracts"],"tags":"nostr, bitcoin, smartcontracts","user":{"name":"Melvin Carvalho","username":"melvincarvalho","twitter_username":"melvincarvalho","github_username":"melvincarvalho","user_id":448014,"website_url":"https://melvincarvalho.com/#me","profile_image":"https://media2.dev.to/dynamic/image/width=640,height=640,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F448014%2F8c938ffb-fe97-4763-a32c-acb329fb32d1.jpg","profile_image_90":"https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F448014%2F8c938ffb-fe97-4763-a32c-acb329fb32d1.jpg"}},{"type_of":"article","id":2374087,"title":"What Does `did-nostr` Do?","description":"🧭 What Does did-nostr Do?   did-nostr is a DID method that brings decentralized identity to...","readable_publish_date":"Apr 2 '25","slug":"what-does-did-nostr-do-2o68","path":"/melvincarvalho/what-does-did-nostr-do-2o68","url":"https://dev.to/melvincarvalho/what-does-did-nostr-do-2o68","comments_count":0,"public_reactions_count":0,"collection_id":null,"published_timestamp":"2025-04-02T08:07:50Z","language":"en","subforem_id":1,"positive_reactions_count":0,"cover_image":"https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgw3mv9tqn6vz57eexigk.png","social_image":"https://media2.dev.to/dynamic/image/width=1000,height=500,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgw3mv9tqn6vz57eexigk.png","canonical_url":"https://dev.to/melvincarvalho/what-does-did-nostr-do-2o68","created_at":"2025-04-02T08:07:51Z","edited_at":null,"crossposted_at":null,"published_at":"2025-04-02T08:07:50Z","last_comment_at":"2025-04-02T08:07:50Z","reading_time_minutes":2,"tag_list":["nostr"],"tags":"nostr","user":{"name":"Melvin Carvalho","username":"melvincarvalho","twitter_username":"melvincarvalho","github_username":"melvincarvalho","user_id":448014,"website_url":"https://melvincarvalho.com/#me","profile_image":"https://media2.dev.to/dynamic/image/width=640,height=640,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F448014%2F8c938ffb-fe97-4763-a32c-acb329fb32d1.jpg","profile_image_90":"https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F448014%2F8c938ffb-fe97-4763-a32c-acb329fb32d1.jpg"}},{"type_of":"article","id":2364828,"title":"Sketch: Selling Digital Art with DID-Nostr, Bitcoin, and Nostr","description":"Sketch: Selling Digital Art with DID-Nostr, Bitcoin, and Nostr   The fusion of digital...","readable_publish_date":"Mar 29 '25","slug":"sketch-selling-digital-art-with-did-nostr-bitcoin-and-nostr-3mai","path":"/melvincarvalho/sketch-selling-digital-art-with-did-nostr-bitcoin-and-nostr-3mai","url":"https://dev.to/melvincarvalho/sketch-selling-digital-art-with-did-nostr-bitcoin-and-nostr-3mai","comments_count":0,"public_reactions_count":2,"collection_id":null,"published_timestamp":"2025-03-29T12:32:13Z","language":"en","subforem_id":1,"positive_reactions_count":2,"cover_image":"https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0eqdlqvzy31ymq38gm0g.png","social_image":"https://media2.dev.to/dynamic/image/width=1000,height=500,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0eqdlqvzy31ymq38gm0g.png","canonical_url":"https://dev.to/melvincarvalho/sketch-selling-digital-art-with-did-nostr-bitcoin-and-nostr-3mai","created_at":"2025-03-29T12:32:14Z","edited_at":null,"crossposted_at":null,"published_at":"2025-03-29T12:32:13Z","last_comment_at":"2025-03-29T12:32:13Z","reading_time_minutes":2,"tag_list":["ai","art","nostr"],"tags":"ai, art, nostr","user":{"name":"Melvin Carvalho","username":"melvincarvalho","twitter_username":"melvincarvalho","github_username":"melvincarvalho","user_id":448014,"website_url":"https://melvincarvalho.com/#me","profile_image":"https://media2.dev.to/dynamic/image/width=640,height=640,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F448014%2F8c938ffb-fe97-4763-a32c-acb329fb32d1.jpg","profile_image_90":"https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F448014%2F8c938ffb-fe97-4763-a32c-acb329fb32d1.jpg"}},{"type_of":"article","id":2362382,"title":"Trustless Bitcoin Swaps with DID, Nostr, and HTLCs","description":"🤔 The Problem   Say Alice wants to send 100,000 sats to Bob.  But:   Alice only has on-chain...","readable_publish_date":"Mar 28 '25","slug":"trustless-bitcoin-swaps-with-did-nostr-and-htlcs-2gde","path":"/melvincarvalho/trustless-bitcoin-swaps-with-did-nostr-and-htlcs-2gde","url":"https://dev.to/melvincarvalho/trustless-bitcoin-swaps-with-did-nostr-and-htlcs-2gde","comments_count":0,"public_reactions_count":0,"collection_id":null,"published_timestamp":"2025-03-28T09:24:45Z","language":"en","subforem_id":1,"positive_reactions_count":0,"cover_image":"https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffafw4g2zik9fxfu0k8jo.png","social_image":"https://media2.dev.to/dynamic/image/width=1000,height=500,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffafw4g2zik9fxfu0k8jo.png","canonical_url":"https://dev.to/melvincarvalho/trustless-bitcoin-swaps-with-did-nostr-and-htlcs-2gde","created_at":"2025-03-28T09:24:46Z","edited_at":null,"crossposted_at":null,"published_at":"2025-03-28T09:24:45Z","last_comment_at":"2025-03-28T09:24:45Z","reading_time_minutes":2,"tag_list":["bitcoin","nostr","did"],"tags":"bitcoin, nostr, did","user":{"name":"Melvin Carvalho","username":"melvincarvalho","twitter_username":"melvincarvalho","github_username":"melvincarvalho","user_id":448014,"website_url":"https://melvincarvalho.com/#me","profile_image":"https://media2.dev.to/dynamic/image/width=640,height=640,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F448014%2F8c938ffb-fe97-4763-a32c-acb329fb32d1.jpg","profile_image_90":"https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F448014%2F8c938ffb-fe97-4763-a32c-acb329fb32d1.jpg"}},{"type_of":"article","id":2315837,"title":"How to Fix Cursor AppImage Not Running on Ubuntu 24.04","description":"How to Fix Cursor AppImage Not Running on Ubuntu 24.04 (AppArmor Solution)   If you just...","readable_publish_date":"Mar 6 '25","slug":"how-to-fix-cursor-appimage-not-running-on-ubuntu-2404-2o3p","path":"/melvincarvalho/how-to-fix-cursor-appimage-not-running-on-ubuntu-2404-2o3p","url":"https://dev.to/melvincarvalho/how-to-fix-cursor-appimage-not-running-on-ubuntu-2404-2o3p","comments_count":0,"public_reactions_count":11,"collection_id":null,"published_timestamp":"2025-03-06T22:21:35Z","language":"en","subforem_id":1,"positive_reactions_count":11,"cover_image":null,"social_image":"https://media2.dev.to/dynamic/image/width=1000,height=500,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpemumy6mcnx447x60l4a.png","canonical_url":"https://dev.to/melvincarvalho/how-to-fix-cursor-appimage-not-running-on-ubuntu-2404-2o3p","created_at":"2025-03-06T22:21:36Z","edited_at":null,"crossposted_at":null,"published_at":"2025-03-06T22:21:35Z","last_comment_at":"2025-03-06T22:21:35Z","reading_time_minutes":2,"tag_list":["cursor"],"tags":"cursor","user":{"name":"Melvin Carvalho","username":"melvincarvalho","twitter_username":"melvincarvalho","github_username":"melvincarvalho","user_id":448014,"website_url":"https://melvincarvalho.com/#me","profile_image":"https://media2.dev.to/dynamic/image/width=640,height=640,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F448014%2F8c938ffb-fe97-4763-a32c-acb329fb32d1.jpg","profile_image_90":"https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F448014%2F8c938ffb-fe97-4763-a32c-acb329fb32d1.jpg"}},{"type_of":"article","id":2299174,"title":"Could Nostr Subkeys Replace GPG? A Simple, Powerful Alternative for the Modern Web","description":"For decades, GPG (GNU Privacy Guard) has been the go-to tool for secure messaging, signing, and...","readable_publish_date":"Feb 26 '25","slug":"could-nostr-subkeys-replace-gpg-a-simple-powerful-alternative-for-the-modern-web-aa0","path":"/melvincarvalho/could-nostr-subkeys-replace-gpg-a-simple-powerful-alternative-for-the-modern-web-aa0","url":"https://dev.to/melvincarvalho/could-nostr-subkeys-replace-gpg-a-simple-powerful-alternative-for-the-modern-web-aa0","comments_count":0,"public_reactions_count":0,"collection_id":null,"published_timestamp":"2025-02-26T13:47:55Z","language":"en","subforem_id":1,"positive_reactions_count":0,"cover_image":"https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Foc7m2rqtl9q4phmwkj4h.png","social_image":"https://media2.dev.to/dynamic/image/width=1000,height=500,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Foc7m2rqtl9q4phmwkj4h.png","canonical_url":"https://dev.to/melvincarvalho/could-nostr-subkeys-replace-gpg-a-simple-powerful-alternative-for-the-modern-web-aa0","created_at":"2025-02-26T13:47:57Z","edited_at":null,"crossposted_at":null,"published_at":"2025-02-26T13:47:55Z","last_comment_at":"2025-02-26T13:47:55Z","reading_time_minutes":4,"tag_list":["nostr"],"tags":"nostr","user":{"name":"Melvin Carvalho","username":"melvincarvalho","twitter_username":"melvincarvalho","github_username":"melvincarvalho","user_id":448014,"website_url":"https://melvincarvalho.com/#me","profile_image":"https://media2.dev.to/dynamic/image/width=640,height=640,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F448014%2F8c938ffb-fe97-4763-a32c-acb329fb32d1.jpg","profile_image_90":"https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F448014%2F8c938ffb-fe97-4763-a32c-acb329fb32d1.jpg"}},{"type_of":"article","id":1627111,"title":"Nostr-Passport: A Step Towards Infinite Storage","description":"In the evolving digital landscape, Nostr-Passport presents itself not as a spectacle but as a humble...","readable_publish_date":"Oct 7 '23","slug":"nostr-passport-a-step-towards-infinite-storage-l9l","path":"/melvincarvalho/nostr-passport-a-step-towards-infinite-storage-l9l","url":"https://dev.to/melvincarvalho/nostr-passport-a-step-towards-infinite-storage-l9l","comments_count":0,"public_reactions_count":3,"collection_id":null,"published_timestamp":"2023-10-07T15:48:40Z","language":"en","subforem_id":null,"positive_reactions_count":3,"cover_image":"https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F72i3htqodmbf8dckpyum.jpeg","social_image":"https://media2.dev.to/dynamic/image/width=1000,height=500,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F72i3htqodmbf8dckpyum.jpeg","canonical_url":"https://dev.to/melvincarvalho/nostr-passport-a-step-towards-infinite-storage-l9l","created_at":"2023-10-07T15:48:40Z","edited_at":"2023-10-07T18:43:25Z","crossposted_at":null,"published_at":"2023-10-07T15:48:40Z","last_comment_at":"2023-10-07T15:48:40Z","reading_time_minutes":2,"tag_list":["nostr","passport","nip98","nosdav"],"tags":"nostr, passport, nip98, nosdav","user":{"name":"Melvin Carvalho","username":"melvincarvalho","twitter_username":"melvincarvalho","github_username":"melvincarvalho","user_id":448014,"website_url":"https://melvincarvalho.com/#me","profile_image":"https://media2.dev.to/dynamic/image/width=640,height=640,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F448014%2F8c938ffb-fe97-4763-a32c-acb329fb32d1.jpg","profile_image_90":"https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F448014%2F8c938ffb-fe97-4763-a32c-acb329fb32d1.jpg"}},{"type_of":"article","id":1460295,"title":"Smart Events (Contracts) Over Nostr: A Consensus-Based Approach","description":"Introduction:   In this blog post, we'll explore the concept of smart events (contracts)...","readable_publish_date":"May 7 '23","slug":"smart-events-contracts-over-nostr-a-consensus-based-approach-1l9n","path":"/melvincarvalho/smart-events-contracts-over-nostr-a-consensus-based-approach-1l9n","url":"https://dev.to/melvincarvalho/smart-events-contracts-over-nostr-a-consensus-based-approach-1l9n","comments_count":0,"public_reactions_count":1,"collection_id":null,"published_timestamp":"2023-05-07T12:43:19Z","language":null,"subforem_id":null,"positive_reactions_count":1,"cover_image":"https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fk8ol9qhgfff5t874x9a6.jpeg","social_image":"https://media2.dev.to/dynamic/image/width=1000,height=500,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fk8ol9qhgfff5t874x9a6.jpeg","canonical_url":"https://dev.to/melvincarvalho/smart-events-contracts-over-nostr-a-consensus-based-approach-1l9n","created_at":"2023-05-07T12:43:19Z","edited_at":null,"crossposted_at":null,"published_at":"2023-05-07T12:43:19Z","last_comment_at":"2023-05-07T12:43:19Z","reading_time_minutes":2,"tag_list":["nostr","smart","layer2","events"],"tags":"nostr, smart, layer2, events","user":{"name":"Melvin Carvalho","username":"melvincarvalho","twitter_username":"melvincarvalho","github_username":"melvincarvalho","user_id":448014,"website_url":"https://melvincarvalho.com/#me","profile_image":"https://media2.dev.to/dynamic/image/width=640,height=640,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F448014%2F8c938ffb-fe97-4763-a32c-acb329fb32d1.jpg","profile_image_90":"https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F448014%2F8c938ffb-fe97-4763-a32c-acb329fb32d1.jpg"}},{"type_of":"article","id":1460059,"title":"Run a Nostr Relay on Your Phone with Termux and Fonstr","description":"Explore a World of Possibilities: Run a Nostr Relay on Your Phone with Termux and Fonstr  Stay...","readable_publish_date":"May 7 '23","slug":"run-a-nostr-relay-on-your-phone-with-termux-and-fonstr-4cmg","path":"/melvincarvalho/run-a-nostr-relay-on-your-phone-with-termux-and-fonstr-4cmg","url":"https://dev.to/melvincarvalho/run-a-nostr-relay-on-your-phone-with-termux-and-fonstr-4cmg","comments_count":1,"public_reactions_count":11,"collection_id":null,"published_timestamp":"2023-05-07T06:54:21Z","language":null,"subforem_id":null,"positive_reactions_count":11,"cover_image":"https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbw7f5oydb6qwv0yxblty.jpeg","social_image":"https://media2.dev.to/dynamic/image/width=1000,height=500,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbw7f5oydb6qwv0yxblty.jpeg","canonical_url":"https://dev.to/melvincarvalho/run-a-nostr-relay-on-your-phone-with-termux-and-fonstr-4cmg","created_at":"2023-05-07T06:54:22Z","edited_at":"2023-05-07T07:29:35Z","crossposted_at":null,"published_at":"2023-05-07T06:54:21Z","last_comment_at":"2023-06-05T13:28:36Z","reading_time_minutes":3,"tag_list":["nostr","fonstr","relay","phone"],"tags":"nostr, fonstr, relay, phone","user":{"name":"Melvin Carvalho","username":"melvincarvalho","twitter_username":"melvincarvalho","github_username":"melvincarvalho","user_id":448014,"website_url":"https://melvincarvalho.com/#me","profile_image":"https://media2.dev.to/dynamic/image/width=640,height=640,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F448014%2F8c938ffb-fe97-4763-a32c-acb329fb32d1.jpg","profile_image_90":"https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F448014%2F8c938ffb-fe97-4763-a32c-acb329fb32d1.jpg"}},{"type_of":"article","id":1437443,"title":"Introducing NosDAV: The Powerful Integration of Nostr and WebDAV for Efficient Data Storage","description":"Introduction   When Relays Fall Short, NosDAV Bridges the Gap with Cloud Solutions  The...","readable_publish_date":"Apr 16 '23","slug":"introducing-nosdav-the-powerful-integration-of-nostr-and-webdav-for-efficient-data-storage-5fji","path":"/melvincarvalho/introducing-nosdav-the-powerful-integration-of-nostr-and-webdav-for-efficient-data-storage-5fji","url":"https://dev.to/melvincarvalho/introducing-nosdav-the-powerful-integration-of-nostr-and-webdav-for-efficient-data-storage-5fji","comments_count":0,"public_reactions_count":1,"collection_id":null,"published_timestamp":"2023-04-16T08:11:37Z","language":null,"subforem_id":null,"positive_reactions_count":1,"cover_image":"https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnlinrmz7ylj90ro5cm0s.png","social_image":"https://media2.dev.to/dynamic/image/width=1000,height=500,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnlinrmz7ylj90ro5cm0s.png","canonical_url":"https://dev.to/melvincarvalho/introducing-nosdav-the-powerful-integration-of-nostr-and-webdav-for-efficient-data-storage-5fji","created_at":"2023-04-16T08:11:37Z","edited_at":"2023-04-16T08:38:07Z","crossposted_at":null,"published_at":"2023-04-16T08:11:37Z","last_comment_at":"2023-04-16T08:11:37Z","reading_time_minutes":2,"tag_list":["nostr","nosdav"],"tags":"nostr, nosdav","user":{"name":"Melvin Carvalho","username":"melvincarvalho","twitter_username":"melvincarvalho","github_username":"melvincarvalho","user_id":448014,"website_url":"https://melvincarvalho.com/#me","profile_image":"https://media2.dev.to/dynamic/image/width=640,height=640,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F448014%2F8c938ffb-fe97-4763-a32c-acb329fb32d1.jpg","profile_image_90":"https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F448014%2F8c938ffb-fe97-4763-a32c-acb329fb32d1.jpg"}},{"type_of":"article","id":1345072,"title":"The Web - A Brief History","description":"Web 1.0   The web was proposed in 1989, by Tim Berners-Lee but had been conceived decades...","readable_publish_date":"Jan 28 '23","slug":"the-web-a-brief-history-38df","path":"/melvincarvalho/the-web-a-brief-history-38df","url":"https://dev.to/melvincarvalho/the-web-a-brief-history-38df","comments_count":2,"public_reactions_count":1,"collection_id":null,"published_timestamp":"2023-01-28T19:22:50Z","language":"en","subforem_id":null,"positive_reactions_count":1,"cover_image":"https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Foct7wo7ubniwc6rbjns8.gif","social_image":"https://media2.dev.to/dynamic/image/width=1000,height=500,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Foct7wo7ubniwc6rbjns8.gif","canonical_url":"https://dev.to/melvincarvalho/the-web-a-brief-history-38df","created_at":"2023-01-28T19:22:51Z","edited_at":null,"crossposted_at":null,"published_at":"2023-01-28T19:22:50Z","last_comment_at":"2023-06-11T15:50:49Z","reading_time_minutes":5,"tag_list":["sql","database","performance","learning"],"tags":"sql, database, performance, learning","user":{"name":"Melvin Carvalho","username":"melvincarvalho","twitter_username":"melvincarvalho","github_username":"melvincarvalho","user_id":448014,"website_url":"https://melvincarvalho.com/#me","profile_image":"https://media2.dev.to/dynamic/image/width=640,height=640,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F448014%2F8c938ffb-fe97-4763-a32c-acb329fb32d1.jpg","profile_image_90":"https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F448014%2F8c938ffb-fe97-4763-a32c-acb329fb32d1.jpg"}},{"type_of":"article","id":1166859,"title":"Autonomous Agents","description":"An autonomous agent is a computer program that is able to act on its own, without any human...","readable_publish_date":"Aug 13 '22","slug":"autonomous-agents-5aek","path":"/melvincarvalho/autonomous-agents-5aek","url":"https://dev.to/melvincarvalho/autonomous-agents-5aek","comments_count":0,"public_reactions_count":3,"collection_id":null,"published_timestamp":"2022-08-13T21:29:45Z","language":"en","subforem_id":null,"positive_reactions_count":3,"cover_image":null,"social_image":"https://media2.dev.to/dynamic/image/width=1000,height=500,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fui172tbpto25fd4lj7zn.png","canonical_url":"https://dev.to/melvincarvalho/autonomous-agents-5aek","created_at":"2022-08-13T21:29:45Z","edited_at":null,"crossposted_at":null,"published_at":"2022-08-13T21:29:45Z","last_comment_at":"2022-08-13T21:29:45Z","reading_time_minutes":1,"tag_list":["aam","autonomous","agents"],"tags":"aam, autonomous, agents","user":{"name":"Melvin Carvalho","username":"melvincarvalho","twitter_username":"melvincarvalho","github_username":"melvincarvalho","user_id":448014,"website_url":"https://melvincarvalho.com/#me","profile_image":"https://media2.dev.to/dynamic/image/width=640,height=640,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F448014%2F8c938ffb-fe97-4763-a32c-acb329fb32d1.jpg","profile_image_90":"https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F448014%2F8c938ffb-fe97-4763-a32c-acb329fb32d1.jpg"}},{"type_of":"article","id":969386,"title":"The Nostr Protocol - NIP01","description":"What is Nostr?   Nostr stands for \"Notes and Other Stuff Transmitted by Relays\".  It is a...","readable_publish_date":"Jan 27 '22","slug":"the-nostr-protocol-nip01-5ach","path":"/melvincarvalho/the-nostr-protocol-nip01-5ach","url":"https://dev.to/melvincarvalho/the-nostr-protocol-nip01-5ach","comments_count":2,"public_reactions_count":15,"collection_id":null,"published_timestamp":"2022-01-27T09:47:05Z","language":null,"subforem_id":null,"positive_reactions_count":15,"cover_image":"https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frjkv1upy192dbpcixn47.png","social_image":"https://media2.dev.to/dynamic/image/width=1000,height=500,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frjkv1upy192dbpcixn47.png","canonical_url":"https://dev.to/melvincarvalho/the-nostr-protocol-nip01-5ach","created_at":"2022-01-27T09:47:05Z","edited_at":"2022-01-30T10:45:20Z","crossposted_at":null,"published_at":"2022-01-27T09:47:05Z","last_comment_at":"2023-10-13T07:41:57Z","reading_time_minutes":2,"tag_list":["nostr","protocol","social","relay"],"tags":"nostr, protocol, social, relay","user":{"name":"Melvin Carvalho","username":"melvincarvalho","twitter_username":"melvincarvalho","github_username":"melvincarvalho","user_id":448014,"website_url":"https://melvincarvalho.com/#me","profile_image":"https://media2.dev.to/dynamic/image/width=640,height=640,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F448014%2F8c938ffb-fe97-4763-a32c-acb329fb32d1.jpg","profile_image_90":"https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F448014%2F8c938ffb-fe97-4763-a32c-acb329fb32d1.jpg"}},{"type_of":"article","id":910633,"title":"How to Get a List of dev.to Posts From the API","description":"Overview    I've decided to download my dev.to posts so that I can store them in git.  That...","readable_publish_date":"Nov 27 '21","slug":"how-to-get-devto-posts-for-the-api-552g","path":"/melvincarvalho/how-to-get-devto-posts-for-the-api-552g","url":"https://dev.to/melvincarvalho/how-to-get-devto-posts-for-the-api-552g","comments_count":0,"public_reactions_count":57,"collection_id":null,"published_timestamp":"2021-11-27T11:43:17Z","language":null,"subforem_id":null,"positive_reactions_count":57,"cover_image":null,"social_image":"https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3otvb2z646ytpt1hl2rv.jpg","canonical_url":"https://dev.to/melvincarvalho/how-to-get-devto-posts-for-the-api-552g","created_at":"2021-11-27T11:43:17Z","edited_at":"2021-11-28T12:30:28Z","crossposted_at":null,"published_at":"2021-11-27T11:43:17Z","last_comment_at":"2021-11-27T11:43:17Z","reading_time_minutes":2,"tag_list":["devto","api","javascript","beginners"],"tags":"devto, api, javascript, beginners","user":{"name":"Melvin Carvalho","username":"melvincarvalho","twitter_username":"melvincarvalho","github_username":"melvincarvalho","user_id":448014,"website_url":"https://melvincarvalho.com/#me","profile_image":"https://media2.dev.to/dynamic/image/width=640,height=640,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F448014%2F8c938ffb-fe97-4763-a32c-acb329fb32d1.jpg","profile_image_90":"https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F448014%2F8c938ffb-fe97-4763-a32c-acb329fb32d1.jpg"}},{"type_of":"article","id":909993,"title":"Adding Gitmark to lazygit","description":"Gitmark is a way to mark your git commits to achieve finalization  Lazygit is a useful tool for those...","readable_publish_date":"Nov 26 '21","slug":"adding-gitmark-to-lazygit-dmc","path":"/melvincarvalho/adding-gitmark-to-lazygit-dmc","url":"https://dev.to/melvincarvalho/adding-gitmark-to-lazygit-dmc","comments_count":0,"public_reactions_count":2,"collection_id":null,"published_timestamp":"2021-11-26T15:52:03Z","language":null,"subforem_id":null,"positive_reactions_count":2,"cover_image":null,"social_image":"https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3otvb2z646ytpt1hl2rv.jpg","canonical_url":"https://dev.to/melvincarvalho/adding-gitmark-to-lazygit-dmc","created_at":"2021-11-26T15:52:03Z","edited_at":"2021-11-26T16:07:39Z","crossposted_at":null,"published_at":"2021-11-26T15:52:03Z","last_comment_at":"2021-11-26T15:52:03Z","reading_time_minutes":1,"tag_list":["gitmark","git","lazygit","config"],"tags":"gitmark, git, lazygit, config","user":{"name":"Melvin Carvalho","username":"melvincarvalho","twitter_username":"melvincarvalho","github_username":"melvincarvalho","user_id":448014,"website_url":"https://melvincarvalho.com/#me","profile_image":"https://media2.dev.to/dynamic/image/width=640,height=640,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F448014%2F8c938ffb-fe97-4763-a32c-acb329fb32d1.jpg","profile_image_90":"https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F448014%2F8c938ffb-fe97-4763-a32c-acb329fb32d1.jpg"}},{"type_of":"article","id":421262,"title":"Introducing Linked Objects","description":"What is a Linked Object?   A linked object is is an object which you get from an URL, the...","readable_publish_date":"Aug 7 '20","slug":"introducting-linked-objects-314h","path":"/melvincarvalho/introducting-linked-objects-314h","url":"https://dev.to/melvincarvalho/introducting-linked-objects-314h","comments_count":0,"public_reactions_count":5,"collection_id":null,"published_timestamp":"2020-08-07T12:36:39Z","language":"en","subforem_id":null,"positive_reactions_count":5,"cover_image":"https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fqfa6pdpwn7qxvqn4pho5.png","social_image":"https://media2.dev.to/dynamic/image/width=1000,height=500,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fqfa6pdpwn7qxvqn4pho5.png","canonical_url":"https://dev.to/melvincarvalho/introducting-linked-objects-314h","created_at":"2020-08-07T10:49:49Z","edited_at":"2021-11-28T14:14:57Z","crossposted_at":null,"published_at":"2020-08-07T12:36:39Z","last_comment_at":"2020-08-07T12:36:39Z","reading_time_minutes":2,"tag_list":["linkedobjects","linkeddata","jsonld","json"],"tags":"linkedobjects, linkeddata, jsonld, json","user":{"name":"Melvin Carvalho","username":"melvincarvalho","twitter_username":"melvincarvalho","github_username":"melvincarvalho","user_id":448014,"website_url":"https://melvincarvalho.com/#me","profile_image":"https://media2.dev.to/dynamic/image/width=640,height=640,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F448014%2F8c938ffb-fe97-4763-a32c-acb329fb32d1.jpg","profile_image_90":"https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F448014%2F8c938ffb-fe97-4763-a32c-acb329fb32d1.jpg"}}]