├── .circleci └── config.yml ├── .github └── ISSUE_TEMPLATE │ ├── config.yml │ └── open_an_issue.md ├── .gitignore ├── LICENSE ├── Makefile ├── PIPELINE.md ├── README.md ├── config.toml ├── content-i18n ├── .DS_Store └── zh-cn │ ├── .DS_Store │ └── post │ ├── weekly-11.md │ ├── weekly-51.md │ ├── weekly-52.md │ ├── weekly-53.md │ ├── weekly-54.md │ ├── weekly-55.md │ ├── weekly-56.md │ ├── weekly-57.md │ ├── weekly-58.md │ ├── weekly-59.md │ ├── weekly-60.md │ ├── weekly-61.md │ ├── weekly-62.md │ ├── weekly-63.md │ ├── weekly-64.md │ ├── weekly-65.md │ ├── weekly-66.md │ ├── weekly-67.md │ ├── weekly-68.md │ ├── weekly-69.md │ ├── weekly-70.md │ ├── weekly-71.md │ └── weekly-72.md ├── content └── post │ ├── 000-hello-worlds.md │ ├── 001-run-ipfs-on-docker.md │ ├── 002-ipscend.md │ ├── 003-registry-mirror.md │ ├── 004-v04x-migration.md │ ├── 005-ipfs-0-4-0-released.md │ ├── 006-distributions.md │ ├── 007-v03x-shutdown.md │ ├── 008-ipfs-0-4-3-released.md │ ├── 009-q3-review.md │ ├── 010-go-ipfs-0-4-4-released.md │ ├── 011-run-ipfs-on-a-vps.md │ ├── 012-js-ipfs-0-23.md │ ├── 013-uncensorable-wikipedia.md │ ├── 014-pubsub.md │ ├── 015-js-ipfs-0-24.md │ ├── 016-go-ipfs-0-4-10.md │ ├── 017-js-ipfs-0.25.md │ ├── 018-js-ipfs-pubsub.md │ ├── 019-js-ipfs-crdts.md │ ├── 020-js-ipfs-0.26.md │ ├── 021-js-ipfs-0.27.md │ ├── 022-js-ipfs-0.28.md │ ├── 023-go-ipfs-0.4.14.md │ ├── 024-ipfs-companion-2.2.0.md │ ├── 025-a-look-at-windows.md │ ├── 026-ipfs-conf-dev-meetings-and-user-registry.md │ ├── 027-js-ipfs-0.29.md │ ├── 028-go-libp2p-6.0.0.md │ ├── 029-js-ipfs-0.30.md │ ├── 030-js-libp2p-0.23.md │ ├── 031-js-ipfs-0.31.md │ ├── 032-js-ipfs-0.32.md │ ├── 033-ipld-explorer-cli-0.14.md │ ├── 034-js-ipfs-0.33.md │ ├── 035-go-ipfs-0-4-18.md │ ├── 036-js-libp2p-0.24.md │ ├── 037-http-client-rename.md │ ├── 038-js-ipfs-0.34.md │ ├── 039-london-hack-week-report.md │ ├── 040-crdt-research-meetup.md │ ├── 041-ann-ipfs-camp.md │ ├── 042-lisbon-hack-week.md │ ├── 043-ipfs-2019-roadmap.md │ ├── 044-js-ipfs-0.35.md │ ├── 045-js-libp2p-0.25.md │ ├── 046-go-ipfs-0.4.20.md │ ├── 047-js-ipfs-0.36.md │ ├── 048-ipfs-dev-meetings-2018.md │ ├── 049-go-ipfs-0.4.21.md │ ├── 050-ipfs-camp-recap.md │ ├── 051-ipfs-camp-content-first-batch.md │ ├── 051-new-ipfs-release-process.md │ ├── 052-operation-task-force.md │ ├── 053-js-ipfs-0.37.md │ ├── 054-go-ipfs-0.4.22.md │ ├── 054-great-calamity-circumvention-assembly-at-ipfs-camp.md │ ├── 055-js-libp2p-0.26.md │ ├── 056-pubsub-in-the-browser.md │ ├── 057-ipfs-camp-course-videos.md │ ├── 058-ipfs-desktop-0-9.md │ ├── 059-ipfs-camp-sci-fi-fair-videos.md │ ├── 060-ipfs-camp-keynotes-interviews.md │ ├── 070-js-ipfs-0-38.md │ ├── 071-ipfs-in-web-browsers.md │ ├── 072-js-ipfs-0.39.md │ ├── 073-073-go-ipfs-as-a-library.md │ ├── 074-explore-the-files-api-on-protoschool.md │ ├── 075-js-ipfs-0.40.md │ ├── 076-ipfs-docs-beta.md │ ├── 077-collaborative-clusters.md │ ├── 078-go-ipfs-0.4.23.md │ ├── 079-async-await-refactor.md │ ├── 080-big-refactors.md │ ├── 081-js-libp2p-0.27.md │ ├── 082-ethdenver-2020.md │ ├── 082-our-focus-for-2020.md │ ├── 083-improved-bitswap-with-netflix.md │ ├── 083-js-ipfs-0.41.md │ ├── 084-explore-the-anatomy-of-a-cid-on-protoschool.md │ ├── 085-announcing-rust-ipfs.md │ ├── 086-ipfs-in-opera-for-android.md │ ├── 087-ipfs-mobile-design-research.md │ ├── 087-js-ipfs-0.42.md │ ├── 088-ipfs-grants-platform.md │ ├── 089-ipfs-mobile-design-research-findings.md │ ├── 090-go-ipfs-0-5-0.md │ ├── 091-dev-exp.md │ ├── 092-launching-testground.md │ ├── 093-ipfs-pinning-summit-recap.md │ ├── 094-gossipsub-v1.1.md │ ├── 095-road-to-dht.md │ ├── 096-js-ipfs-0.44.md │ ├── 097-js-ipfs-0.46.md │ ├── 098-libp2p-in-2020.md │ ├── 099-identity-ipfs-ion.md │ ├── 100-IPFS-mobile-design-guidelines.md │ ├── 100-june-meetup-recap.md │ ├── 101-go-ipfs-0-6-0.md │ ├── 102-case-study-audius.md │ ├── 102-gossipsub-reports.md │ ├── 104-dht-deep-dive.md │ ├── 104-js-ipfs-0.48.md │ ├── 105-deprecating-secio.md │ ├── 106-ipfs-meetup-aug2020.md │ ├── 107-nix-ipfs-milestone-1.md │ ├── 108-js-ipfs-0.50.0.md │ ├── 109-ipfs-meetup-sep2020.md │ ├── 110-go-ipfs-0-7-0.md │ ├── 111-js-ipfs-0-51-0.md │ ├── 112-dht-hardening.md │ ├── 113-community-rfp.md │ ├── 114-ipfs-in-2021.md │ ├── 115-protoschool-merkle-dags.md │ ├── 116-ipfs-and-igalia-collaborate-on-dweb-in-browsers.md │ ├── 117-js-ipfs-0.53.md │ ├── 118-ipfs-in-brave.md │ ├── 119-how-we-put-ipfs-in-brave.md │ ├── 120-ipfs-at-ethdenver.md │ ├── 121-js-ipfs-0.54.md │ ├── 122-ethdenver-bounties.md │ ├── 123-opera-ios-and-ipfs.md │ ├── 124-protoschool-libp2p.md │ ├── 125-go-ipfs-0-8-0.md │ ├── 126-ipfs-at-ethdenver.md │ ├── 127-own-your-identity-with-ion.md │ ├── 128-storing-nfts-on-ipfs.md │ ├── meet-the-community--Alan-Shaw-IPFS.md │ ├── meet-the-community--Carson-Farmer-Textile.md │ ├── meet-the-community--Edgar-Lee-Netflix.md │ ├── weekly-001.md │ ├── weekly-002.md │ ├── weekly-003.md │ ├── weekly-004.md │ ├── weekly-005.md │ ├── weekly-006.md │ ├── weekly-007.md │ ├── weekly-008.md │ ├── weekly-009.md │ ├── weekly-010.md │ ├── weekly-011.md │ ├── weekly-012.md │ ├── weekly-013.md │ ├── weekly-014.md │ ├── weekly-015.md │ ├── weekly-016.md │ ├── weekly-017.md │ ├── weekly-018.md │ ├── weekly-019.md │ ├── weekly-020.md │ ├── weekly-021.md │ ├── weekly-022.md │ ├── weekly-023.md │ ├── weekly-024.md │ ├── weekly-025.md │ ├── weekly-026.md │ ├── weekly-027.md │ ├── weekly-028.md │ ├── weekly-029.md │ ├── weekly-030.md │ ├── weekly-031.md │ ├── weekly-032.md │ ├── weekly-033.md │ ├── weekly-034.md │ ├── weekly-035.md │ ├── weekly-036.md │ ├── weekly-037.md │ ├── weekly-038.md │ ├── weekly-039.md │ ├── weekly-040.md │ ├── weekly-041.md │ ├── weekly-042.md │ ├── weekly-043.md │ ├── weekly-044.md │ ├── weekly-045.md │ ├── weekly-046.md │ ├── weekly-047.md │ ├── weekly-048.md │ ├── weekly-049.md │ ├── weekly-050.md │ ├── weekly-051.md │ ├── weekly-052.md │ ├── weekly-053.md │ ├── weekly-054.md │ ├── weekly-055.md │ ├── weekly-056.md │ ├── weekly-057.md │ ├── weekly-058.md │ ├── weekly-059.md │ ├── weekly-060.md │ ├── weekly-061.md │ ├── weekly-062.md │ ├── weekly-063.md │ ├── weekly-064.md │ ├── weekly-065.md │ ├── weekly-066.md │ ├── weekly-067.md │ ├── weekly-068.md │ ├── weekly-069.md │ ├── weekly-070.md │ ├── weekly-071.md │ ├── weekly-072.md │ ├── weekly-073.md │ ├── weekly-074.md │ ├── weekly-075.md │ ├── weekly-076.md │ ├── weekly-077.md │ ├── weekly-078.md │ ├── weekly-079.md │ ├── weekly-080.md │ ├── weekly-081.md │ ├── weekly-082.md │ ├── weekly-083.md │ ├── weekly-084.md │ ├── weekly-085.md │ ├── weekly-086.md │ ├── weekly-087.md │ ├── weekly-088.md │ ├── weekly-089.md │ ├── weekly-090.md │ ├── weekly-091.md │ ├── weekly-092.md │ ├── weekly-093.md │ ├── weekly-094.md │ ├── weekly-095.md │ ├── weekly-096.md │ ├── weekly-097.md │ ├── weekly-098.md │ ├── weekly-099.md │ ├── weekly-100.md │ ├── weekly-101.md │ ├── weekly-102.md │ ├── weekly-103.md │ ├── weekly-104.md │ ├── weekly-105.md │ ├── weekly-106.md │ ├── weekly-107.md │ ├── weekly-108.md │ ├── weekly-109.md │ ├── weekly-110.md │ ├── weekly-111.md │ ├── weekly-112.md │ ├── weekly-113.md │ ├── weekly-114.md │ ├── weekly-115.md │ ├── weekly-116.md │ ├── weekly-117.md │ ├── weekly-118.md │ ├── weekly-119.md │ ├── weekly-120.md │ ├── weekly-121.md │ ├── weekly-122.md │ ├── weekly-123.md │ ├── weekly-124.md │ ├── weekly-125.md │ ├── weekly-126.md │ ├── weekly-127.md │ ├── weekly-128.md │ ├── weekly-129.md │ └── weekly-130.md ├── drafts └── templates │ ├── index.md │ ├── skeleton-example.md │ └── skeleton.md ├── i18n ├── en.json └── zh-cn.json ├── layouts ├── _default │ └── index.html ├── index.json ├── partials │ ├── footer.html │ ├── head.html │ ├── header.html │ ├── pagination.html │ ├── summary.html │ ├── translation-disclaimer.html │ ├── translation-missing.html │ └── translations.html ├── post │ ├── list.html │ └── single.html ├── rss.xml └── shortcodes │ └── asciinema.html ├── less ├── base.less ├── components │ ├── footer.less │ ├── header.less │ ├── navigation.less │ ├── typography.less │ └── youtube.less ├── globals │ ├── _helpers.less │ └── _variables.less ├── main.less ├── pages │ ├── home.less │ └── post.less └── yeti.less ├── package-lock.json ├── package.json ├── static ├── 0-hello-worlds │ └── earthrise.png ├── 056-pubsub-in-the-browser │ ├── demo-screenshot.png │ └── ipfs-pubsub-in-browser-video.jpg ├── 058-ipfs-desktop-0-9 │ ├── browse-wild.jpg │ ├── evolution.jpg │ ├── ipfs-cmd.jpg │ └── npm-ipfs.jpg ├── 059-ipfs-camp-sci-fi-fair-videos │ ├── actyx.jpg │ ├── catbot.jpg │ ├── ipns.jpg │ ├── marnee-minitel.jpg │ ├── npm-in-box.jpg │ └── vasa.jpg ├── 076-ipfs-docs-beta │ └── img │ │ ├── docs-beta-screenshot.png │ │ └── docs-beta-site-mindmap.png ├── 090-go-ipfs-0-5-0 │ ├── .DS_Store │ ├── 0.5-Infographic.png │ ├── IPFS 0.5.0 Launch Meetup.png │ ├── Launch-Meetup.png │ ├── container-image.png │ └── ipfs-contributors.png ├── 091-dev-exp │ └── labels-autoresponder.png ├── 092-launching-testground │ ├── launch_testground_architecture.png │ └── launch_testground_flowchart.png ├── 095-road-to-dht │ ├── Brendan-quote.png │ └── research.jpg ├── 097-js-ipfs-0.46 │ └── bitswap-speedup.png ├── 098-libp2p-in-2020 │ └── find-perf.png ├── 1-run-ipfs-on-docker │ └── ascii │ │ ├── ascii.css │ │ ├── ascii.js │ │ ├── index.html │ │ └── stdout.json ├── 100-mobile-design-guidelines │ ├── cheat-sheet-preview.png │ ├── cheat-sheet.pdf │ ├── cheat-sheet.png │ ├── principles.png │ └── scenarios.png ├── 104-dht-deep-dive │ ├── find-time-dht.png │ └── ipns-time-dht.png ├── 108-js-ipfs-0.50.0 │ └── pinning-performance.png ├── 11-ipfs-weekly-6 │ ├── 006_cbase_deaddrop.jpeg │ ├── 006_lgierth_fc00.jpg │ └── 006_station.png ├── 111-js-ipfs-0-51-0 │ └── types.png ├── 113-community-rfp │ └── screenshot.png ├── 114-ipfs-in-2021 │ ├── browser-integration.png │ ├── content-routing.png │ ├── proposals.png │ └── security-model.png ├── 115-protoschool-merkle-dags │ ├── dag-deduplication.png │ ├── protowizard.png │ ├── talk-rod.png │ └── talk-tara.png ├── 119-brave-how-we-built-this │ ├── ipfs-early.png │ ├── ipfs-install.png │ └── ipfs-streaming.jpg ├── 12-ipfs-weekly-7 │ ├── 007_cbase_deaddrop.jpg │ └── 007_talk.png ├── 124-libp2p-comes-to-protoschool │ ├── libp2p-ipfs-animation.gif │ └── libp2p-logo-animation.gif ├── 125-go-ipfs-0-8-0 │ ├── 125-go-ipfs-0-8-0-diagram.png │ └── 125-go-ipfs-0-8-0-wide.png ├── 13-ipfs-weekly-8 │ └── 008_webui.gif ├── 14-ipfs-0-4-0-released │ └── fireworks.jpg ├── 15-ipfs-weekly-9 │ ├── 009_lisbon.png │ ├── 009_neo.jpg │ └── 009_orbit.png ├── 16-ipfs-weekly-10 │ ├── 010_ipfs-boston.jpg │ ├── 010_js-libp2p.png │ └── 010_orbit.png ├── 17-distributions │ └── img │ │ └── screenshot.png ├── 22-run-ipfs-on-a-vps │ └── asciicast-85339.json ├── 3-ipscend │ └── img │ │ ├── ipscend-screenshot.gif │ │ └── ipscend.png ├── 36-a-look-at-windows │ └── img │ │ ├── build.gif │ │ ├── empty.png │ │ ├── filenames.png │ │ ├── garbage.png │ │ ├── log-after.png │ │ ├── log-before.png │ │ ├── overwrite 1.png │ │ ├── overwrite 2.png │ │ └── pipe.png ├── 53-go-ipfs-0-4-18 │ └── img │ │ ├── cpu-load.png │ │ └── gc-latency.png ├── 67-crdt-research-meetup │ └── img │ │ ├── video1.png │ │ ├── video2.png │ │ ├── video3.png │ │ └── video4.png ├── 78-ipfs-2019-roadmap │ └── img │ │ ├── 2019-epics.png │ │ ├── goals.png │ │ ├── mission-statement.png │ │ └── q2-okrs.png ├── 8-registry-mirror │ └── img │ │ ├── enter-registry-mirror.png │ │ └── node-interactive-logo.png ├── asciinema │ ├── asciinema-player.css │ └── asciinema-player.js ├── fonts │ ├── 314625_0_0.eot │ ├── 314625_0_0.ttf │ ├── 314625_0_0.woff │ ├── 314625_0_0.woff2 │ ├── 314625_2_0.eot │ ├── 314625_2_0.ttf │ ├── 314625_2_0.woff │ ├── 314625_2_0.woff2 │ ├── 314625_4_0.eot │ ├── 314625_4_0.ttf │ ├── 314625_4_0.woff │ └── 314625_4_0.woff2 ├── header_images │ ├── .DS_Store │ ├── 045-js-libp2p-0.25.png │ ├── 055-js-libp2p-0.26.png │ ├── 060-ipfs-camp-keynotes-interviews.png │ ├── 071-ipfs-in-web-browsers.png │ ├── 074-explore-the-files-api-on-protoschool.png │ ├── 076-ipfs-docs-beta.png │ ├── 077-collaborative-clusters.png │ ├── 081-js-libp2p-0.27.png │ ├── 082-ethdenver-2020.png │ ├── 082-our-focus-for-2020.png │ ├── 083-improved-bitswap-with-netflix.png │ ├── 084-explore-the-anatomy-of-a-cid-on-protoschool.png │ ├── 085-announcing-rust-ipfs.png │ ├── 086-ipfs-in-opera-for-android.png │ ├── 088-ipfs-grants-platform.png │ ├── 090-go-ipfs-0-5-0.png │ ├── 092-launching-testground.png │ ├── 093-ipfs-pinning-summit-recap.png │ ├── 094-gossipsub-v1.1-headerimage+grid.jpeg │ ├── 094-gossipsub-v1.1-headerimage.jpeg │ ├── 095-road-to-dht.png │ ├── 100-mobile-design-guidelines-header.png │ ├── 102-case-study-audius.png │ ├── 102-header-image-gossipsub-reports.png │ ├── 104-dht-deep-dive.png │ ├── 107-nix-ipfs.jpg │ ├── 112-dht-hardening.jpg │ ├── 113-community-rfp.jpg │ ├── 114-ipfs-2021.jpg │ ├── 115-protoschool-merkle-dags.png │ ├── 119-how-we-put-ipfs-in-brave.jpg │ ├── 124-libp2p-comes-to-protoschool.png │ ├── 125-go-ipfs-0-8-0.png │ ├── 127-ion-header.png │ ├── 128-nft-header.png │ ├── blog-header-ion.png │ ├── blog-header-libp2p.png │ ├── blog-placeholder.png │ ├── eth1.png │ ├── eth2.png │ ├── ipfs-at-ethdenver.png │ ├── ipfs-in-brave.png │ ├── ipfs-in-browsers.png │ ├── ipfs-weekly-placeholder.png │ ├── js-ipfs-placeholder.png │ ├── opera-ipfs-header.png │ └── weekly-newsletter.png ├── highlight │ ├── color-brewer.css │ ├── github-gist.css │ ├── github.css │ └── highlight.js ├── img │ ├── 057-ipfs-camp-course-videos │ │ ├── core-a-thumbnail.png │ │ └── core-d-thumbnail.png │ ├── 060-ipfs-camp-recap │ │ ├── camp-gif.gif │ │ └── ipfs-camp-youtube-preview.jpg │ ├── 071-ipfs-in-web-browsers │ │ ├── enable-embedded-node-in-brave.png │ │ ├── enabling-ipfs-companion-in-brave.gif │ │ ├── opera-announcement.png │ │ └── stages-of-browser-integration.png │ ├── 074-explore-the-files-api-on-protoschool │ │ ├── challenge_screenshot.png │ │ └── toc_screenshot.png │ ├── 082-ethdenver-2020 │ │ └── ipfs-ethdenver.png │ ├── 084-protoschool-tutorial-anatomy-of-a-cid │ │ ├── cid-inspector.png │ │ ├── quiz.png │ │ ├── sample-lesson.png │ │ ├── table-of-contents.png │ │ ├── toggle-coding-challenges.png │ │ └── type-icons.png │ ├── 086-ipfs-in-opera-for-android │ │ ├── opera-android-banner.png │ │ ├── opera-android-play-store.png │ │ ├── opera-android-protocol-demo.png │ │ ├── opera-android-settings.gif │ │ └── opera-android-test-page.png │ ├── 087-ipfs-mobile-design-research │ │ └── device-sales-2005-2016.jpg │ ├── 098_devcon.png │ ├── 099-identity-ipfs-ion │ │ ├── ion-architecture.png │ │ ├── ion-logo.png │ │ └── ipfs-ion-header.png │ ├── 101-case-study-audius │ │ └── case-study-audius.jpg │ ├── 120-ipfs-at-ethdenver │ │ ├── ethdenver2019.jpeg │ │ ├── flyingspork.png │ │ ├── helpdesk2020.jpg │ │ └── sportscastle.png │ ├── banner.png │ ├── brave-enable-daemon.gif │ ├── brave-enable-ipfs.gif │ ├── ethdenver-winners.png │ ├── favicon.ico │ ├── footer-bg.png │ ├── footer-stars.png │ ├── gossipsubv1.1-jupyter.gif │ ├── help-desk.png │ ├── icon-rss.svg │ ├── icon-social-facebook.svg │ ├── icon-social-google.svg │ ├── icon-social-twitter.svg │ ├── icon-social-youtube.svg │ ├── ion-explorer.png │ ├── ipfs-in-brave.png │ ├── ipfs-logo-128-ice.png │ ├── ipfs-logo-256-ice.png │ ├── ipfs-logo.svg │ ├── meet-the-community │ │ ├── alan-shaw.jpg │ │ ├── carson-farmer.jpg │ │ └── edgar-lee.jpg │ ├── opera-ios-app-store-short.png │ ├── opera-ios-wikipedia-short.png │ ├── opera-ipfs-header.png │ └── virtual-castle.jpeg └── js │ └── main.js └── versions ├── current └── history /.circleci/config.yml: -------------------------------------------------------------------------------- 1 | version: 2 2 | jobs: 3 | build: 4 | docker: 5 | - image: circleci/node:12.18.3 6 | steps: 7 | - checkout 8 | - run: 9 | command: make 10 | - persist_to_workspace: 11 | root: . 12 | paths: 13 | - public 14 | 15 | deploy: 16 | docker: 17 | - image: olizilla/ipfs-dns-deploy:latest 18 | environment: 19 | DOMAIN: blog.ipfs.io 20 | BUILD_DIR: public 21 | steps: 22 | - attach_workspace: 23 | at: /tmp/workspace 24 | - run: 25 | name: Deploy website to IPFS 26 | command: | 27 | pin_name="$DOMAIN build $CIRCLE_BUILD_NUMBER" 28 | 29 | hash=$(pin-to-cluster.sh "$pin_name" /tmp/workspace/$BUILD_DIR) 30 | 31 | echo "Website added to IPFS: https://ipfs.io/ipfs/$hash" 32 | 33 | # Update DNSlink for prod or dev domain 34 | if [ "$CIRCLE_BRANCH" == "master" ] ; then 35 | dnslink-dnsimple -d $DOMAIN -r _dnslink -l /ipfs/$hash 36 | fi 37 | 38 | workflows: 39 | version: 2 40 | build-deploy: 41 | jobs: 42 | - build 43 | - deploy: 44 | context: ipfs-dns-deploy 45 | requires: 46 | - build 47 | # deploy the blog every day at 00:00 UTC, to allow scheduled posting. 48 | nightly: 49 | jobs: 50 | - build 51 | - deploy: 52 | context: ipfs-dns-deploy 53 | requires: 54 | - build 55 | triggers: 56 | - schedule: 57 | cron: "0 0 * * *" 58 | filters: 59 | branches: 60 | only: 61 | - master 62 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/config.yml: -------------------------------------------------------------------------------- 1 | blank_issues_enabled: false 2 | contact_links: 3 | - name: Getting Help on IPFS 4 | url: https://ipfs.io/help 5 | about: All information about how and where to get help on IPFS. 6 | - name: IPFS Official Forum 7 | url: https://discuss.ipfs.io 8 | about: Please post general questions, support requests, and discussions here. 9 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/open_an_issue.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Open an issue 3 | about: Only for actionable issues relevant to this repository. 4 | title: '' 5 | labels: need/triage 6 | assignees: '' 7 | 8 | --- 9 | 20 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | public 2 | node_modules 3 | auth.token 4 | static/css/main.css 5 | DS_Store 6 | .DS_Store 7 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2016 Protocol Labs 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in 13 | all copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 21 | THE SOFTWARE. 22 | -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | local="http://localhost:8080/ipfs/" 2 | gway="https://ipfs.io/ipfs/" 3 | 4 | zone="ipfs.io" 5 | record="_dnslink.blog" 6 | 7 | NPM=npm 8 | NPMBIN=./node_modules/.bin 9 | OUTPUTDIR=public 10 | 11 | ifeq ($(DEBUG), true) 12 | PREPEND= 13 | APPEND= 14 | else 15 | PREPEND=@ 16 | APPEND=1>/dev/null 17 | endif 18 | 19 | build: clean install lint css minify 20 | $(PREPEND)$(NPMBIN)/hugo && \ 21 | echo "" && \ 22 | echo "Site built out to ./public dir" 23 | 24 | serve: install lint js css minify 25 | $(PREPEND)$(NPMBIN)/hugo server 26 | 27 | node_modules: 28 | $(PREPEND)$(NPM) i $(APPEND) 29 | 30 | install: node_modules 31 | $(PREPEND)[ -d static/css ] || mkdir -p static/css 32 | 33 | lint: install 34 | $(PREPEND)$(NPMBIN)/lessc --lint less/* 35 | 36 | css: install 37 | $(PREPEND)$(NPMBIN)/lessc --clean-css --autoprefix less/main.less static/css/main.css $(APPEND) 38 | 39 | minify: install minify-img 40 | 41 | minify-img: install 42 | $(PREPEND)find static -type d -exec $(NPMBIN)/imagemin {}/* --out-dir={} $(APPEND) \; & \ 43 | wait 44 | 45 | dev: install css 46 | $(PREPEND)( \ 47 | $(NPMBIN)/nodemon -q -e less --exec "$(NPMBIN)/lessc --clean-css --autoprefix less/main.less static/css/main.css" & \ 48 | $(NPMBIN)/hugo server -w --buildFuture \ 49 | ) 50 | 51 | clean: 52 | $(PREPEND)[ ! -d $(OUTPUTDIR) ] || rm -rf $(OUTPUTDIR) && \ 53 | [ ! -d static/css ] || rm -rf static/css/* 54 | 55 | publish: build 56 | @ipfs swarm peers >/dev/null 2>&1 || ( \ 57 | echo "error: ipfs daemon must be online to publish"; \ 58 | echo "try running: ipfs daemon" && exit 1) 59 | ipfs add -r -q public/ | tail -n1 >versions/current 60 | cat versions/current >>versions/history 61 | @export hash=`cat versions/current`; \ 62 | echo ""; \ 63 | echo "published blog:"; \ 64 | echo "- $(local)$$hash"; \ 65 | echo "- $(gway)$$hash"; \ 66 | echo ""; \ 67 | echo "next steps:"; \ 68 | echo "- ipfs pin add -r /ipfs/$$hash"; \ 69 | echo "- make publish-to-domain"; \ 70 | 71 | publish-to-github: 72 | ./publish-to-github 73 | 74 | # Only run after publish, or there won't be a path to set. 75 | publish-to-domain: auth.token 76 | DIGITAL_OCEAN=$(shell cat auth.token) node_modules/.bin/dnslink-deploy \ 77 | --domain=$(zone) --record=$(record) --path=/ipfs/$(shell cat versions/current) 78 | 79 | .PHONY: build clean publish publish-to-github 80 | -------------------------------------------------------------------------------- /config.toml: -------------------------------------------------------------------------------- 1 | baseURL = "https://blog.ipfs.io" 2 | relativeURLs = true 3 | googleAnalytics = "UA-52930282-2" 4 | ignoreFiles = [ "\\.js\\.tmp*"] 5 | 6 | DefaultContentLanguage = "en" 7 | languageCode = "en-us" 8 | hasCJKLanguage = true 9 | enableMissingTranslationPlaceholders = false 10 | summaryLength = 20 11 | paginate = 9 12 | 13 | [params] 14 | domain = "blog.ipfs.io" 15 | name = "IPFS Blog" 16 | title = "IPFS Blog" 17 | description = "A peer-to-peer hypermedia protocol to make the web faster, safer, and more open." 18 | author = "Protocol Labs" 19 | github = "https://github.com/ipfs/blog" 20 | social = [ { title = "Twitter", link = "https://twitter.com/IPFS" }, 21 | { title = "Facebook", link = "https://www.facebook.com/sharer/sharer.php?u=https://ipfs.io" }, 22 | { title = "YouTube", link = "https://www.youtube.com/channel/UCdjsUXJ3QawK4O5L1kqqsew" } ] 23 | 24 | [outputs] 25 | home = ["HTML", "RSS", "JSON"] 26 | 27 | [languages] 28 | [languages.en] 29 | languageName = "English" 30 | languageCode = "en" 31 | weight = 0 32 | [languages.zh-cn] 33 | languageName = "中文(中国)" 34 | contentDir = "content-i18n/zh-cn" 35 | languageCode = "zh-cn" 36 | weight = 10 37 | -------------------------------------------------------------------------------- /content-i18n/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/content-i18n/.DS_Store -------------------------------------------------------------------------------- /content-i18n/zh-cn/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/content-i18n/zh-cn/.DS_Store -------------------------------------------------------------------------------- /content-i18n/zh-cn/post/weekly-66.md: -------------------------------------------------------------------------------- 1 | --- 2 | date: 2019-11-05 3 | url: /zh-ch/weekly-66/ 4 | translationKey: ipfs-weekly-66 5 | tags: weekly 6 | title: IPFS 周报-66 7 | author: 默奕 8 | --- 9 | 10 | ## 欢迎来到 IPFS 周刊。👋 11 | 12 | [星际文件系统 (IPFS)](https://ipfs.io/) 是一种新的超媒体分布协议,通过内容和标识来寻址。IPFS 支持创建完全分布式的应用程序。它的目标是使网络更快、更安全、更开放。由于范围广大,本周刊旨在跟踪整个生态系统的开发。 13 | 14 | 想参与其中?点击下面的一些链接,查看我们在 [GitHub](https://github.com/ipfs) 上的内容,或加入我们的 [IRC](https://riot.im/app/#/room/#ipfs:matrix.org)。 15 | 16 | 想要更新您的收件箱吗? [订阅我们的每周通讯!](http://eepurl.com/gL2Pi5) 17 | 18 | 以下是自上次 IPFS 周刊以来的一些亮点。 19 | 20 | 21 | ## 最新发布 22 | 23 | ### 新教程:将 go-ipfs 用作程序库(不需要单独的过程!) 24 | 25 | 如果您错过了它,通过[此新教程](https://github.com/ipfs/go-ipfs/tree/master/docs/examples/go-ipfs-as-a-library)学习如何使用 go-ipfs 核心 API 生成 go-ipfs 节点。 26 | 27 | ## IPFS 生态圈的动态 28 | *您是否关注 [Twitter 上的 IPFS](https://twitter.com/IPFSbot) ?有关 IPFS 的最新新闻,请查看我们的 Twitter 提要或查看[关于 Awesome IPFS 的最新文章](https://awesome.ipfs.io/articles/)。* 29 | 30 | * [TemporalX 开发环境正式发布](https://www.reddit.com/r/ipfs/comments/dqu45y/temporalx_development_environment_is_live/) ,2019年11月3日 31 | * [本周视频:Filecoin 和 Web3](https://avc.com/2019/11/video-of-the-week-filecoin-and-web3/) ,AVC,2019年11月2日 32 | * 照片: [Textile 首席执行官 Andrew Hill 在 Data Science Wrangle 上解释 IPFS 多么酷](https://twitter.com/bethann_nyc/status/1189725609414385664?s=20),Bethann Noble,2019年10月30日 33 | * [去中心化舞蹈](https://medium.com/the-decentralization-dance-enable-not-control/the-decentralization-dance-a8a670bf852b), Aicumen,2019年10月29日 34 | * 播客: [Qri:与 Brendan O'Brien 和 Rico Gardaphe 讨论数据集](https://bettermousetrap.nyc/podcast/qri-talking-data-sets-with-brendan-obrien-rico-gardaphe/) ,A Better Mouse Trap,2019年10月29日 35 | * [高性能 IPFS 网关的明确指南](https://blog.stacktical.com/ipfs/gateway/dapp/2019/09/21/ipfs-server-google-cloud-platform.html) ,Stackical,2019年9月21日 36 | 37 | ## 空缺的 IPFS 工作岗位 38 | 39 | + [技术负责人,分布式系统测试基础架构](https://jobs.lever.co/protocol/1ef5b878-573d-44fc-9fe6-c3745597c1fd),Protocol Labs,远程工作 40 | + [分布式系统工程师,IPFS 群集(Go 语言)](https://jobs.lever.co/protocol/29207ca7-76a4-470f-b94a-e24244f9adc1),Protocol Labs,远程工作 41 | + [高级后端工程师](https://www.golangprojects.com/golang-go-job-dcr-Senior-Backend-Engineer-Berlin-MXC-Foundation-gGmbH.html),MXC 基金会 gGmbH,德国 柏林 42 | + [分布式系统技术主管](https://jobs.lever.co/protocol/9283f9b0-de64-4e1f-a221-5d02b0202198),IPFS,Protocol Labs,远程工作 43 | 44 | ## 即将到来的社区活动 45 | *您知道 IPFS 在 [discuss.ipfs.io](https://discuss.ipfs.io/) 上有一个社区论坛吗? 注册参与关于编码的讨论、教程、查看公告和了解即将到来的社区活动。* 46 | 47 | + **2019年11月6日:** [巴黎每月 P2P Peer 对 Beer](https://p2p.paris/en/event/monthly-2/) 活动是由 P2P 和密码学爱好者社区组织并为其举办的会议。法国,巴黎。 48 | + **2019年11月14日:** [DWeb 会谈:Textile.io 的 Carson Farmer](https://www.meetup.com/ProtoSchool-Seattle-Learn-to-Make-the-Decentralized-Web/events/263590720/),西雅图 ProtoSchool 主办。快来访问 Textile.io 上的去中心化网络开发人员 Carson Farmer!美国,华盛顿州,西雅图。 49 | + **2019年12月6日:** [柏林 React Day](https://reactday.berlin/) :构建代码,而不是围墙。参与 React 世界的探索! React Day Berlin 会议专注于深入的演讲,动手研讨会和寻找新的机会,为每个人提供了结识新朋友和共同开发一流应用程序的空间。德国,柏林。 50 | 51 | ## 感谢您的阅读 ☺️ 52 | 53 | 以上是本周有关 IPFS 的全部新闻。如果我们错过了什么,[请回复邮件](mailto:newsletter@ipfs.io)通知我们! 我们可以在下周的节目中介绍您。 54 | -------------------------------------------------------------------------------- /content/post/000-hello-worlds.md: -------------------------------------------------------------------------------- 1 | --- 2 | date: 2015-05-05 3 | url: /0-hello-worlds/ 4 | title: Hello Worlds 5 | author: Juan Benet 6 | --- 7 | 8 | ```sh 9 | > echo "hello worlds" | ipfs add 10 | added QmZ4tDuvesekSs4qM5ZBKpXiZGun7S2CYtEZRB3DYXkjGx 11 | > ipfs cat QmZ4tDuvesekSs4qM5ZBKpXiZGun7S2CYtEZRB3DYXkjGx 12 | hello worlds 13 | ``` 14 | 15 | Greetings Internet! 16 | 17 | This post kicks off the official IPFS (InterPlanetary File System) Blog. This is long overdue-- the project is many months old. We will be making a series of posts explaining various aspects of IPFS, its development, our growing community, and so on. This blog will also be used to make all important announcements henceforth. 18 | 19 | 20 | 21 | You can't _yet_ "follow" the blog with ipfs, but we're working on it and expect to have it working soon. For now, you can follow one of these ways: 22 | 23 | - HTTP: https://blog.ipfs.io 24 | - Git: `git clone https://github.com/ipfs/blog` 25 | - GitHub: click watch at https://github.com/ipfs/blog 26 | - RSS: [follow RSS Feed](https://blog.ipfs.io/index.xml) 27 | - IPFS: https://gateway.ipfs.io/ipns/blog.ipfs.io 28 | 29 | Don't miss any InterPlanetary updates! 30 | 31 | ![](earthrise.png) 32 | -------------------------------------------------------------------------------- /content/post/001-run-ipfs-on-docker.md: -------------------------------------------------------------------------------- 1 | --- 2 | date: 2015-07-11 3 | url: /1-run-ipfs-on-docker/ 4 | title: Run IPFS in a Docker container 5 | author: Kyle Drake 6 | --- 7 | 8 | In recent years, Docker and a few other projects have redefined how we run server applications. In the future, we might be running containerized apps in our personal devices. At its core, this fast-paced improvement is a combination of good interfaces to standardize how to do things, and great tooling to make using containers easy. 9 | 10 | The IPFS Project has many things planned for the world of containers. The most interesting is using IPFS to distribute containers hyper efficiently across data-centers and the internet. We will be discussing many of these things in upcoming posts, but first things first. This post is a quick guide for running an IPFS node directly within Docker. 11 | 12 | The IPFS team has provided an [IPFS Docker image](https://registry.hub.docker.com/r/ipfs/go-ipfs), which is syncronized with the latest commits to [go-ipfs](https://github.com/ipfs/go-ipfs). It only takes a few commands to try it out! 13 | 14 | ```sh 15 | > mkdir /tmp/ipfs-docker-staging 16 | > mkdir /tmp/ipfs-docker-data 17 | > docker run -d --name ipfs-node \ 18 | -v /tmp/ipfs-docker-staging:/export -v /tmp/ipfs-docker-data:/data/ipfs \ 19 | -p 8080:8080 -p 4001:4001 -p 127.0.0.1:5001:5001 \ 20 | ipfs/go-ipfs:latest 21 | faa8f714398c7a1a5a29adc2aed01857b41444ed53ec11863a3136ad37c8064c 22 | ``` 23 | 24 | Port `8080` is the HTTP Gateway, which allows you to query ipfs data with your browser ([see this example](http://gateway.ipfs.io/ipfs/QmVyS3iAy7mvDA2HqQWm2aqZDcGDH3bCRLFkEutfBWNBqN/)), port `4001` is what swarm port IPFS uses to communicate with other nodes, and port `5001` is used for the local API. We bind `5001` only on `127.0.0.1` because it should not be exposed to the outside world. The `faa8f7143...` is the docker container id. 25 | 26 | We've mounted a data and staging volume. The `data` volume is used to store the IPFS local repo (config and database), and `staging` is a directory you can use for staging files for command line usage (such as `ipfs add`). If you're only using the API, you can omit the staging directory volume. And of course, feel free to put those directories somewhere other than `/tmp`. 27 | 28 | Now what? Your node is running. You can issue commands directly to the containerized ipfs with `docker exec `. For example, you can try `ipfs swarm peers` to see who you are connected to: 29 | 30 | ```sh 31 | # let's set $cid = for easy access 32 | > cid=faa8f714398c7a1a5a29adc2aed01857b41444ed53ec11863a3136ad37c8064c 33 | > docker exec $cid ipfs swarm peers 34 | /ip4/104.236.179.241/tcp/4001/ipfs/QmSoLpPVmHKQ4XTPdz8tjDFgdeRFkpV8JgYq8JVJ69RrZm 35 | /ip4/128.199.219.111/tcp/4001/ipfs/QmSoLSafTMBsPKadTEgaXctDQVcqN88CNLHXMkTNwMKPnu 36 | /ip4/162.243.248.213/tcp/4001/ipfs/QmSoLueR4xBeUbY9WZ9xGUUxunbKWcrNFTDAadQJmocnWm 37 | /ip4/178.62.61.185/tcp/4001/ipfs/QmSoLMeWqB7YGVLJN3pNLQpmmEk35v6wYtsMGLzSr5QBU3 38 | ``` 39 | 40 | And of course, you can `add` or `cat` content as usual: 41 | 42 | ```sh 43 | > echo "hello from dockerized ipfs" >/tmp/ipfs-docker-staging/hello 44 | > docker exec $cid ipfs add /export/hello 45 | added QmcDge1SrsTBU8b9PBGTGYguNRnm84Kvg8axfGURxqZpR1 /export/hello 46 | > docker exec $cid ipfs cat /ipfs/QmSvCqazpuuib8qyRyddyFemLc2qmRukLLy8YfkdRPEXoQ 47 | hello there! 48 | ``` 49 | 50 | Your dockerized IPFS is now also running a Gateway at `http://:8080`. You can try it out with `curl`, or with your browser: 51 | 52 | ```sh 53 | > curl http://localhost:8080/ipfs/QmcDge1SrsTBU8b9PBGTGYguNRnm84Kvg8axfGURxqZpR1 54 | hello from dockerized ipfs 55 | ``` 56 | 57 | [Kubernetes 1.0](http://kuberneteslaunch.com) comes out next week, so after that, we'll try using it to build a cluster of IPFS nodes that can store any kind of data and be able to retreive it from any other IPFS node. Not just with IPFS nodes in your cluster, but with everyone! 58 | 59 | 60 |

asciicast powered by asciinema

61 | -------------------------------------------------------------------------------- /content/post/007-v03x-shutdown.md: -------------------------------------------------------------------------------- 1 | --- 2 | date: 2016-07-09 3 | url: /18-v03x-shutdown/ 4 | tags: operations, v03x, gateway, bootstrap 5 | title: go-ipfs 0.3.x network shutdown on July 14th 6 | author: Lars Gierth 7 | --- 8 | 9 | The [0.4.x (v04x) series][v04x] of go-ipfs has brought plenty of useful features, and it has been a great success for the whole IPFS community. 10 | 11 | As we're getting closer to the release of go-ipfs 0.4.3, we're also getting closer to ceasing the [remaining support that we've given to the 0.3.x (v03x) series][migration] of go-ipfs. It's been a good while since we last reminded everyone that the v03x network will be discontinued, and we want to use this opportunity to make sure that nobody is taken by surprise. 12 | 13 | We'll be **shutting down** the v03x bootstrappers and gateways on **Thursday, July 14th**. After this date, with go-ipfs 0.3.x: 14 | 15 | - The bootstrap nodes configured by default will no longer allow you to connect. 16 | - The public HTTP-to-IPFS gateway at [ipfs.io][gw] will no longer be able to access data from v03x networks. 17 | 18 | We ask you to update to the latest 0.4.x version, available through [dist.ipfs.io][dist]. If you can't update just yet, you can still connect your v03x nodes to each other by using the `ipfs bootstrap` or `ipfs swarm connect` commands. 19 | 20 | [migration]: https://ipfs.io/blog/9-v04x-migration/ 21 | [v04x]: https://ipfs.io/blog/14-ipfs-0-4-0-released/ 22 | [dist]: https://dist.ipfs.io 23 | [gw]: https://ipfs.io 24 | -------------------------------------------------------------------------------- /content/post/008-ipfs-0-4-3-released.md: -------------------------------------------------------------------------------- 1 | --- 2 | date: 2016-09-20 3 | url: /19-ipfs-0-4-3-released/ 4 | tags: modules 5 | title: go-ipfs 0.4.3 has been released 6 | author: Lars Gierth 7 | --- 8 | 9 | [go-ipfs 0.4.3](https://dist.ipfs.io/#go-ipfs) has been released today, 10 | and we're incredibly proud as it's the fastest and most stable IPFS ever. 11 | Give it a try as soon as you can, we're sure you'll like it as much as we do. 12 | 13 | ## What's changed? 14 | 15 | - Runtime performance has improved all over the place! 16 | Bitswap, Content Routing and Peer Routing, Datastore, Blockstore, you name it. 17 | - Memory usage has improved as Provider records are now stored on disk. 18 | - We now use Golang 1.7, which produces smaller and faster binaries. 19 | - Connectivity between nodes is stabler than ever, 20 | as we fixed transport issues that were previously thought to be NAT-related. 21 | - The go-ipfs daemon now automatically raises the limit of file descriptors if needed. 22 | - The daemon now automatically runs fs-repo migrations. 23 | - The daemon got new flags: 24 | - `ipfs daemon --offline` can be used to disable all swarm networking. 25 | - `ipfs daemon --migrate` automatically runs any pending fs-repo migrations. 26 | - The Datastore got a few more config options: 27 | - `Datastore.HashOnRead` allows you to verify data on read access. 28 | - `Datastore.BloomFilterSize` tunes the new lookup cache. 29 | 30 | And plenty of bug fixes as well as improvements to documentation and test coverage. 31 | [Take a look at the Changelog](https://github.com/ipfs/go-ipfs/blob/master/CHANGELOG.md). 32 | 33 | ## How to upgrade 34 | 35 | Depending on how you initially installed IPFS, there are several ways to 36 | upgrade. If you installed IPFS with a pre-built binary, you can either head over 37 | to [dist.ipfs.io](https://dist.ipfs.io/#go-ipfs) and grab the latest version 38 | from there. Or alternatively, from the same page you can grab the `ipfs-update` 39 | binary, and use it to perform the upgrade for you. If you installed from 40 | source, you can simply run `git checkout v0.4.3`, then run `make install`. 41 | 42 | Please upgrade your IPFS nodes as soon as you can, 43 | so you can take advantage of the improvements. 44 | -------------------------------------------------------------------------------- /content/post/009-q3-review.md: -------------------------------------------------------------------------------- 1 | --- 2 | date: 2016-09-27 3 | url: /20-q3-review/ 4 | title: Join us for the Q3 Roadmap review calls 5 | author: Richard littauer 6 | --- 7 | 8 | Our next weekly call will be focused on roadmaps. We will be planning our roadmaps for the rest of 2016. _You're invited to join in!_ We want to make sure the community is heard and involved as much as possible. 9 | 10 | If you're interested in seeing the progress we've made with IPFS over the last few months or if you have something you want to see done in Q4, tune into these calls and chime in on IRC. 11 | 12 | You are welcome to dial into these calls as a participant if any of the following are true: 13 | * You maintain software that relies directly on IPFS 14 | * You have done work on js-ipfs, go-ipfs, libp2p, orbit, etc. 15 | * You plan to do work on the these projects in the coming months 16 | 17 | To prepare for these calls, take a look at the [video calls from last week](https://www.youtube.com/watch?v=cp0acLtBGvE), where we reviewed the third quarter roadmaps. 18 | 19 | This is a diversion from our usual weekly schedule. As you may know, every Monday we have a series of calls to align work on IPFS for the following week. We announce the calls each week in an issue in [ipfs/pm](https://github.com/ipfs/pm/issues) and on the [#ipfs IRC channel](http://webchat.freenode.net/?channels=%23ipfs). Next week, instead of following [our usual routine](https://github.com/ipfs/pm#sprints-wip), we're going to look at roadmaps. We will cover some of the work we plan to do in the next few months. In mid-October all of the project leads will be meeting in person to lay out our finalized roadmap for the rest of 2016. 20 | 21 | If you'd like to weigh in on the process for the next two weeks, check out [this issue](https://github.com/ipfs/pm/issues/202) and let us know! If you have never participated in the calls before and you plan to dial in as a participant on these roadmapping calls, please let us know you're coming by leaving a comment on that github issue. 22 | -------------------------------------------------------------------------------- /content/post/010-go-ipfs-0-4-4-released.md: -------------------------------------------------------------------------------- 1 | --- 2 | date: 2016-10-11 3 | url: /21-go-ipfs-0-4-4-released/ 4 | title: go-ipfs 0.4.4 has been released 5 | author: whyrusleeping & Lars Gierth 6 | --- 7 | 8 | [go-ipfs 0.4.4](https://dist.ipfs.io/#go-ipfs) has been released today, 9 | including an important hotfix for a bug we discovered in how *pinning* works. 10 | If you had a large number of pins, new pins would overwrite existing pins. 11 | Apart from the hotfix, this release is equal to the previous release 0.4.3. 12 | 13 | - [How pinning works](#how-pinning-works) 14 | - [The bug](#the-bug) 15 | - [Find out if you're affected](#find-out-if-you-re-affected) 16 | - [How to upgrade](#how-to-upgrade) 17 | 18 | ## How pinning works 19 | 20 | Pinning is a means of persisting data in your IPFS repo after adding or fetching it. 21 | It'll prevent objects from getting removed by garbage collection or other methods 22 | of cleaning up the IPFS repo. There are three ways an object can be pinned: 23 | 24 | - **Direct:** Only this object is pinned. Its children aren't pinned. 25 | - **Recursive:** This object and all its children are pinned. 26 | If the recursive pin is removed, the children aren't pinned any longer either. 27 | - **Indirect:** This object is pinned because one of its parents is pinned. 28 | If the pins of all parents are removed, this object isn't pinned any longer. 29 | 30 | The `ipfs add` command adds a *recursive pin* for the added file by default. 31 | With `--pin=false`, it skips pinning. Similarly, the default pin type for 32 | `ipfs pin add` is *recursive*. With `--recursive=false` this changes to *direct*. 33 | 34 | For more information on how pinning works, check out `ipfs pin --help` and `ipfs add --help`. 35 | 36 | ## The bug 37 | 38 | Direct and recursive pins are stored in separate so-called *pinsets*. 39 | Indirect pins aren't stored, since they're derived from recursive pins. 40 | 41 | Once you had more than 8192 pins, recursive or direct, an 42 | issue with the recursive hash trie implementation caused hash table buckets to 43 | be overwritten, resulting in only 256 pins remaining in the pinset. After that, 44 | the bug wouldn't be triggered again until the number of pins exceeded 8192 again. 45 | The 256 pins that remained would be random. 46 | 47 | We fixed this by instead making sure that each item in a pinset be put into its 48 | own bucket, and by modulo'ing hash output from this process into the final key 49 | space. The details for this can be seen 50 | [in this pull request](https://github.com/ipfs/go-ipfs/pull/3273). We added a 51 | stress test to make sure that this doesn't happen in the future, and will 52 | redouble our efforts to make sure that our test suites are more robust to ensure 53 | that these kinds of problems do not happen in the future. 54 | 55 | For now, don't run `ipfs repo gc` on sensitive data that is not otherwise backed up, 56 | as IPFS is still not 1.0 and our development may still find problems. 57 | 58 | [@kyledrake](https://github.com/kyledrake) of [neocities.org](https://neocities.org) 59 | pointed out this bug to us; thank you, Kyle! 60 | 61 | ## Find out if you're affected 62 | 63 | If you think you have experienced this issue and have *not* run a garbage 64 | collection, you can still find the 'lost' pins. We have written a new tool 65 | called 'ipfs-see-all' that allows you to try and recover any old pins that are 66 | still in your local repo. The tool is available on [our distributions 67 | page](https://dist.ipfs.io), or, if you prefer building from source, head over 68 | to [the GitHub repo](https://github.com/whyrusleeping/ipfs-see-all). Once you 69 | have the tool, invoke it as `ipfs-see-all lost-pins` and it will scan for and 70 | print out every pin object that is not actually pinned in your pinset. Note 71 | that this may contain anything you have manually unpinned. 72 | 73 | ## How to upgrade 74 | 75 | Depending on how you initially installed IPFS, there are several ways to 76 | upgrade. If you installed IPFS with a pre-built binary, you can head over 77 | to [dist.ipfs.io](https://dist.ipfs.io/#go-ipfs) and grab the latest version 78 | from there. Or alternatively, from the same page you can grab the `ipfs-update` 79 | binary, and use it to perform the upgrade for you. If you installed from 80 | source, you can simply run `git checkout v0.4.4`, then run `make install`. 81 | -------------------------------------------------------------------------------- /content/post/017-js-ipfs-0.25.md: -------------------------------------------------------------------------------- 1 | --- 2 | date: 2017-07-12 3 | url: /28-js-ipfs-0-25/ 4 | title: js-ipfs 0.25.0 released 5 | author: David Dias 6 | header_image: js-ipfs-placeholder.png 7 | --- 8 | 9 | Today, we've released js-ipfs 0.25.0. This release is mostly maintenance, bug fixing and bringing some of the internal components up to their latest versions. 10 | 11 | 12 | 13 | 14 | # 🔦 Highlights 15 | 16 | ### 🏮 ipfs-repo is now 🐲 free 17 | 18 | The IPFS Repo Class went through [some careful refactoring](https://github.com/ipfs/js-ipfs-repo/pull/140). Now it is easier to understand its internals and to support different backend storage adapters. 19 | 20 | To create a js-ipfs node with your own custom repo, you can now: 21 | 22 | ```JavaScript 23 | const node = new IPFS({repo: }) 24 | ``` 25 | 26 | If you are curious, you can learn about what are the default storage adapters in the IPFS Repo itself, namely: 27 | 28 | - Node.js - https://github.com/ipfs/js-ipfs-repo/blob/master/src/default-options.js 29 | - Browser - https://github.com/ipfs/js-ipfs-repo/blob/master/src/default-options-browser.js 30 | 31 | ### ⬢ libp2p is now used directly and the bundles live inside the js-ipfs repo 32 | 33 | The JavaScript implementation of libp2p received a lot of love recently, including the addition of Tutorials. You can consult all the details on the Log entry of libp2p's Captain.log - https://github.com/libp2p/js-libp2p/issues/6#issuecomment-313970615 34 | 35 | ### 🏎 SPDY is out of the mix and there goes browserify-zlib special shimming. 36 | 37 | SPDY has been removed from the default browser bundle in favor of supporting `libp2p-multiplex` only. SPDY was the Stream Muxer of js-ipfs since almost the beginning, but since go-ipfs never got a complete implementation of SPDY, we ended up switching to `libp2p-multiplex` to guarantee interop between implementations. What this means is that you will continue to see the interop, but now your browser bundle will be significantly lighter. 38 | 39 | ### 📞 wrtc, the WebRTC module for Node.js is now optional 40 | 41 | `wrtc`, a module that enables js-ipfs Node.js nodes to speak WebRTC, has been excluded from the default list of modules so that Linux users can have a better time when using js-ipfs natively. You can still bring it back and now not only use `wrtc` but you can also use `electron-webrtc`, the other WebRTC module for Node.js See how to achieve that in the project's README - https://github.com/ipfs/js-ipfs#advanced-options-when-creating-an-ipfs-node. 42 | 43 | Note, this doesn't change the behavior in the browser. Browser nodes will still continue to use WebRTC by default. 44 | 45 | 46 | If you run into any hurdles, please open an issue on [ipfs/js-ipfs/issues](https://github.com/ipfs/js-ipfs). 47 | 48 | Thank you for your attention, I bid you a good day! 49 | -------------------------------------------------------------------------------- /content/post/018-js-ipfs-pubsub.md: -------------------------------------------------------------------------------- 1 | --- 2 | date: 2017-07-29 3 | url: /29-js-ipfs-pubsub/ 4 | title: Distributed pubsub primitives for js-ipfs in the Browser 5 | author: Pedro Teixeira 6 | --- 7 | 8 | IPFS pubsub was first introduced in September 2016 behind an experimental flag. This initial implementation allowed [orbit](https://orbit.chat/), a chat application built on top of IPFS, to become fully distributed. [@haadcode](https://github.com/haadcode) presented that work at [DEVCON2](https://www.youtube.com/watch?v=vQrbxyDPSXg). Later, [the IPFS team announced that pubsub ](https://ipfs.io/blog/25-pubsub) was ready for the whole community to use. 9 | 10 | In this post I'll show you how to use pubsub with the [JavaScript implementation of IPFS](https://github.com/ipfs/js-ipfs). I start by using the pubsub primitives available in `js-ipfs` and end with a new module [plus video tutorial](https://youtu.be/Nv_Teb--1zg) of how to use it. Make sure to read to the end! 11 | 12 | ## Using pubsub on js-ipfs 13 | 14 | IPFS is not just a filesystem. It's a complete stack for decentralized applications. With pubsub, an IPFS node can show interest in a topic (a string representing a pubsub channel) and is able to listen and send messages on that topic in a way that is decentralized -- it does not rely on any mediating server or special node. 15 | 16 | With [js-ipfs](https://github.com/ipfs/js-ipfs), this code works today in any modern browser. By instantiating an IPFS node in JavaScript and activating the pubsub feature, you can send and receive messages between nodes. 17 | 18 | Here we include the [js-ipfs](https://github.com/ipfs/js-ipfs) library (which you need to have previously installed) and created an IPFS that has the experimental pubsub feature enabled: 19 | 20 | ```js 21 | const IPFS = require('ipfs') 22 | 23 | // create IPFS node 24 | const ipfs = new IPFS({ 25 | EXPERIMENTAL: { 26 | pubsub: true // required, enables pubsub 27 | } 28 | }) 29 | 30 | ipfs.once('ready', () => { 31 | // node is ready 32 | }) 33 | ``` 34 | 35 | Now we're ready to receive messages on a topic: 36 | 37 | ```js 38 | ipfs.pubsub.subscribe('topic-name-here', (message) => { 39 | console.log('got message from ' + message.from) 40 | 41 | // data is a buffer. Here we're converting it into a string 42 | 43 | const data = message.data.toString() 44 | console.log('containing data: ' + data) 45 | }) 46 | ``` 47 | 48 | And we can also send messages: 49 | 50 | ```js 51 | // data should be a buffer 52 | const data = Buffer.from('some message content here') 53 | 54 | ipfs.pubsub.publish('topic-name-here', data, (err) => { 55 | if (err) { 56 | console.error('error publishing: ', err) 57 | } else { 58 | console.log('successfully published message') 59 | } 60 | }) 61 | ``` 62 | 63 | Even though [the js-IPFS pubsub API](https://github.com/ipfs/interface-ipfs-core/tree/master/API/pubsub#pubsub-api) is very simple to use, you will need some additional functionality for most uses. If you want to be able to deal with strings, send private messages to a specific peer and be notified of subscription changes (nodes that are interested in the topic), take a look at the `ipfs-pubsub-room` package. 64 | 65 | # Enter `ipfs-pubsub-room` 66 | 67 | [`ipfs-pubsub-room`](https://github.com/ipfs-shipyard/ipfs-pubsub-room) is a room-oriented take on the pubsub API for IPFS. It's being built in the [`ipfs-shipyard`](https://github.com/ipfs-shipyard). See the full tutorial below: 68 | 69 | 70 | 71 | Happy decentralized messaging! 🎉 72 | -------------------------------------------------------------------------------- /content/post/019-js-ipfs-crdts.md: -------------------------------------------------------------------------------- 1 | --- 2 | date: 2017-08-01 3 | url: /30-js-ipfs-crdts/ 4 | title: Decentralized Real-Time Collaborative Documents - Conflict-free editing in the browser using js-ipfs and CRDTs 5 | author: Pedro Teixeira 6 | --- 7 | 8 | With the introduction of [IPFS PubSub](https://ipfs.io/blog/25-pubsub/), it became possible for IPFS nodes to declare shared _pubsub_ topics, broadcasting updates in real-time to other nodes in the network that have subscribed to the topic. The pubsub pattern is a powerful construct but it does not guarantee delivery of messages and does not guarantee message order. Enter [CRDTs, Conflict-Free Replicated Data Types](https://en.wikipedia.org/wiki/Conflict-free_replicated_data_type), a higher level data structure that allows us to overcome these shortcomings. 9 | 10 | ## Enter CRDTs, Conflict-Free Replicated Data Types 11 | 12 | CRDTs are one of the hot interesting topics in distributed systems. They provide a conflict-free manner of replicating data across multiple nodes without ever having to elect a leader or use another type of centralized authority to reach consensus. They even allow nodes to reach the same state without being connected to the network at the same time. 13 | 14 | [CRDTs were first introduced in 2011](https://link.springer.com/chapter/10.1007%2F978-3-642-24550-3_29) by Carlos Baquero, Nuno Preguiça, Marek Zawirski and Marc Shapiro. You can learn more about CRDTs in the [IPFS research collaborative notebook on CRDTs](https://github.com/ipfs/research-CRDT). 15 | 16 | By forming ad-hoc sets of nodes (ie. using pubsub) and using CRDTs, nodes can come in and out of a cluster and participate in a higher level protocol. 17 | 18 | ## Use case: Collaborative Text Editor 19 | 20 | One set of use cases for CRDTs is when nodes need to collaboratively write to a shared data structure. In the past, this has been achieved by relying on a centralized service to coordinate updates. This centralized approach encourages the wordlwide web to grow in a way that relies on a few private entities to control the the content and delivery of the web. This is neither safe nor scalable. We must move away from centralized services, instead relying on truly distributed peer-to-peer systems that are not controlled by a single entity. 21 | 22 | In [this 10-minute video](https://www.youtube.com/watch?v=-kdx8rJd8rQ) I show you how we can use the [js-ipfs](https://github.com/ipfs/js-ipfs) library and conflict-free replicated data types (CRDTs) to build a simple text editor that allows several peers to collaborate in real-time. The resulting interactions between the nodes are conflict-free, support offline use, and allow nodes to come in and out of the network while continuously converging data to a single state in all the nodes. 23 | 24 | [![https://www.youtube.com/watch?v=-kdx8rJd8rQ](https://user-images.githubusercontent.com/1211152/28122513-4cbdaabc-6716-11e7-8626-ad8154687fe1.png)](https://www.youtube.com/watch?v=-kdx8rJd8rQ) 25 | 26 | ## Final remarks 27 | 28 | Real-time collaborative applications are in their infancy but in the future they will be the norm. Achieving this will be a huge challenge since, in reality, the majority of the devices on the internet are poorly connected, relying on (often mobile) networks that offer little to no reliability. 29 | 30 | Any node should be able to perform changes in a shared data structure even if the underlying network is not reliable. The system should be able to converge these changes into all participating nodes. Nodes should be able to enter and leave the network (either by their own will or because of network conditions) while the system ensures that this does not lead to losing data or threatening convergence. 31 | 32 | What protocols and data structures will allow participating users and their nodes to form ad-hoc networks for spontaneous or planned real-time collaboration without any centralized coordination? 33 | 34 | Peer-to-peer networks can rely on special replicated data types that are distributed and conflict-free, and were built specially for these scenarios. 35 | 36 | If you're interested in this subject and / or would like to learn more, I invite you [to join the conversation in the research-CRDT repository](https://github.com/ipfs/research-CRDT), poke around in the available articles and lectures and contribute. 37 | -------------------------------------------------------------------------------- /content/post/023-go-ipfs-0.4.14.md: -------------------------------------------------------------------------------- 1 | --- 2 | date: 2018-03-26 3 | url: /34-go-ipfs-0.4.14/ 4 | title: go-ipfs 0.4.14 released 5 | author: whyrusleeping & victorbjelkholm 6 | --- 7 | 8 | [go-ipfs 0.4.14](https://dist.ipfs.io/#go-ipfs) has been released today. Not 9 | only have we improved memory and CPU usage but we also managed to fix a lot of 10 | bugs, ship a major improvement to IPNS performance and lots of refactoring! \o/ 11 | 12 | - [Refactoring](#refactoring) 13 | - [IPNS Improvements](#ipns-improvements) 14 | - [Resource Usage Improvements](#resource-usage-improvements) 15 | - [IPFS Core API](#ipfs-core-api) 16 | - [Note Regarding Insecure Hash Functions](#note-regarding-insecure-hash-functions) 17 | 18 | # Refactoring 19 | 20 | The release took longer than expected due to our refactoring and extracting of 21 | our [commands library](https://github.com/ipfs/go-ipfs-cmds). This refactor had 22 | two stages. The first round of the refactor disentangled the commands code from 23 | core go-ipfs code, allowing us to move it out into a separate repository. The 24 | code was previously very entangled with the go-ipfs codebase and not usable for 25 | other projects. The second round of the refactor had the goal of fixing several 26 | major issues around streaming outputs, progress bars, and error handling. It 27 | also paved the way for us to more easily provide an API over other transports, 28 | such as websockets and unix domain sockets. It took a while to flush out all 29 | the kinks on such a massive change. We're pretty sure we've got most of them, 30 | but if you notice anything weird, 31 | [please let us know](https://github.com/ipfs/go-ipfs/issues/new). 32 | 33 | # IPNS Improvements 34 | 35 | Beyond that, we've added a new experimental way to use IPNS. With the new 36 | pubsub IPNS resolver and publisher, you can subscribe to updates of an IPNS 37 | entry, and the owner can publish out changes in real time. With this, IPNS can 38 | become nearly instantaneous. To make use of this, simply start your go-ipfs 39 | daemon with the `--enable-namesys-pubsub` option, and all IPNS resolution and 40 | publishing will use pubsub. Note that resolving an IPNS name via pubsub without 41 | someone publishing it via pubsub will result in a fallback to using the DHT. 42 | Please give this a try and let us know how it goes! 43 | 44 | # Resource Usage Improvements 45 | 46 | Memory and CPU usage should see a noticeable improvement in this release. We 47 | have spent considerable time fixing excess memory usage throughout the codebase 48 | and down into go-libp2p. Fixes in peer tracking, bitswap allocation, pinning, 49 | and many other places have brought down both peak and average memory usage. An 50 | upgraded hashing library, base58 encoding library, and improved allocation 51 | patterns all contribute to overall lower CPU usage across the board. 52 | 53 | # IPFS Core API 54 | 55 | This release also brings the beginning of the go-ipfs 'Core API'. Once 56 | finished, the Core API will be the primary way to interact with go-ipfs using 57 | go. Both embedded nodes and nodes accessed over the HTTP API will have the same 58 | interface. Stay tuned for future updates and documentation. 59 | 60 | # Note Regarding Insecure Hash Functions 61 | 62 | This release of go-ipfs disallows the usage of insecure hash functions and 63 | lengths. go-ipfs does not create these insecure objects for any purpose, but 64 | it did allow manually creating them and fetching them from other peers. If you 65 | currently have objects using insecure hashes in your local go-ipfs repo, please 66 | remove them before updating. 67 | 68 | # Full Changelog 69 | 70 | As always, you can find the full changelog over at ipfs/go-ipfs's Github 71 | repository: 72 | https://github.com/ipfs/go-ipfs/blob/master/CHANGELOG.md#0414-2018-03-22 73 | -------------------------------------------------------------------------------- /content/post/031-js-ipfs-0.31.md: -------------------------------------------------------------------------------- 1 | --- 2 | date: 2018-07-29 3 | url: /42-js-ipfs-0-31/ 4 | title: js-ipfs 0.31.0 released 5 | author: Alan Shaw 6 | header_image: js-ipfs-placeholder.png 7 | --- 8 | 9 | Restoring IPFS magic one alakazam at a time...no we're not talking pokemon. 10 | 11 | 12 | 13 | 14 | # 🔦 Highlights 15 | 16 | ## 🧚 Connectivity Magic 17 | 18 | Recent infrastructure changes to the nodes IPFS runs as gateways meant that they couldn't be used as bootstrapper nodes. This was bad news bears for `js-ipfs` since it doesn't yet have a DHT to discover content. So not being able to connect to the nodes that have a lot of the content meant the chances of `js-ipfs` finding content on the network took a turn for the worse. 19 | 20 | Good news though! Brand new dedicated nodes have been provisioned that are connected to the gateway nodes and can be used by `js-ipfs` to bootstrap itself as well as, get this, preload content you add to IPFS! That's right, when you add stuff to your IPFS, the preload nodes are prompted to slerp it up automatically so that it can be shared instantly with other IPFS nodes on the network. 21 | 22 | ## 🌿 Raw Leaves 23 | 24 | Raw leaves are much healthier for you because they don't lose their vitamins during the cooking process. Seriously though. They're great if you want to stream raw data (like video) out of your IPFS without the overhead of unpacking protobufs. They're also useful when you need to put your data in a data store that only deals with raw data, like a URL. 25 | 26 | We have these now! Just pass `--raw-leaves=true` when adding content to IPFS and leaves of the DAG(s) you create will contain just the raw data. 27 | 28 | # 🏗 API Changes 29 | 30 | * A new configuration property `preload` has been added to the options provided to the IPFS constructor. Content added to IPFS using the following APIs will be automatically preloaded on a set of IPFS nodes. To lean more about how to configure this feature, check the [IPFS constructor docs](https://github.com/ipfs/js-ipfs#ipfs-constructor). 31 | * `dag.put` 32 | * `block.put` 33 | * `object.new` 34 | * `object.put` 35 | * `object.patch.*` 36 | * `files.add*` 37 | * `files.write` 38 | * `files.mv` 39 | * `files.cp` 40 | * The `--raw-leaves` option has been enabled for `files.add` 41 | 42 | # 🙌🏽 Want to contribute? 43 | 44 | Would you like to contribute to the IPFS project and don't know how? Well, there are a few places you can get started: 45 | 46 | - Check the issues with the `help wanted` label at the Ready column in our waffle board - https://waffle.io/ipfs/js-ipfs?label=help%20wanted 47 | - Join an IPFS All Hands, introduce yourself and let us know where you would like to contribute - https://github.com/ipfs/pm/#all-hands-call 48 | - Hack with IPFS and show us what you made! The All Hands call is also the perfect venue for demos, join in and show us what you built 49 | - Join the discussion at http://discuss.ipfs.io/ and help users finding their answers. 50 | - Join the [⚡️ⒿⓈ Core Dev Team Weekly Sync 🙌🏽](https://github.com/ipfs/pm/issues/650) and be part of the Sprint action! 51 | 52 | # ⁉️ Do you have questions? 53 | 54 | The best place to ask your questions about IPFS, how it works and what you can do with it is at [discuss.ipfs.io](http://discuss.ipfs.io). We are also available at the #ipfs channel on Freenode. 55 | -------------------------------------------------------------------------------- /content/post/033-ipld-explorer-cli-0.14.md: -------------------------------------------------------------------------------- 1 | --- 2 | date: 2018-09-12 3 | url: /44-ipld-explorer-cli-0-14/ 4 | title: ipld-explorer-cli 0.14 released 5 | author: Alan Shaw 6 | --- 7 | 8 | There's a new version of the [ipld-explorer-cli](http://npm.im/ipld-explorer-cli) tool for exploring [IPLD](https://ipld.io/) data! Let's break down those acronyms and explain why I'm so excited about this. 9 | 10 | [IPLD (Inter Planetary Linked Data)](https://ipld.io/) is the underlying data structure used by IPFS that allows it to store, retrieve and traverse through any type of content-addressed data. Recently, our team created the awesome new [IPLD Explorer](https://explore.ipld.io) so you can visually explore IPLD objects. If you haven't already checked it out, hop over and explore everything from [git repos](https://explore.ipld.io/#/explore/z8mWaJHXieAVxxLagBpdaNWFEBKVWmMiE) to [ethereum blocks](https://explore.ipld.io/#/explore/z43AaGEvwdfzjrCZ3Sq7DKxdDHrwoaPQDtqF4jfdkNEVTiqGVFW) to [historic photo archives of the lunar landings](https://explore.ipld.io/#/explore/QmSnuWmxptJZdLJpKRarxBMS2Ju2oANVrgbr2xWbie9b2D) to your own IPLD data. 11 | 12 | The IPLD Explorer also comes with a command-line interface ([ipld-explorer-cli](https://www.npmjs.com/package/ipld-explorer-cli)) so you can explore with your keyboard. I was inspired to give it an upgrade so that it could resolve IPLD formats other than `dag-pb` and `dag-cbor`, like `git-raw` and `ethereum-block`. It also now works with a `js-ipfs` daemon if you have one running (you’ll need to update the API address using the "config" command). 13 | 14 | Here's a quick demo video: 15 | 16 |

17 | 18 |

19 | 20 | ### Installing and using the new CLI 21 | 22 | Ensure you have at least: 23 | * [Node.js](https://nodejs.org/en/download/) 24 | 25 | Install the module globally: 26 | 27 | ``` 28 | $ npm i -g ipld-explorer-cli 29 | ``` 30 | 31 | Then, launch the interactive shell: 32 | 33 | ``` 34 | $ ipld-explorer 35 | ``` 36 | 37 | You'll see instructions to explore sample datasets and begin traversing the Merkle forest 🌲🌲🌲. You can also start a [js-ipfs daemon](https://github.com/ipfs/js-ipfs#ipfs-daemon) to explore your own data. Enjoy! 38 | 39 | # 💬 Feedback or bugs? 40 | 41 | Do you have feedback for us, or bugs to report? Please open an issue: https://github.com/tableflip/ipld-explorer-cli/issues 42 | 43 | # 🙌🏽 Want to contribute to this CLI tool? 44 | 45 | Check out the issues marked `good first issue` and let us know where you would like to begin! https://github.com/tableflip/ipld-explorer-cli/issues 46 | 47 | # 🙌🏽 Want to contribute to IPFS? 48 | 49 | Would you like to contribute to the IPFS project and don't know how? Well, there are a few places you can get started: 50 | 51 | - Check the issues with the `help wanted` label at the Ready column in our waffle board - https://waffle.io/ipfs/js-ipfs?label=help%20wanted 52 | - Join an IPFS All Hands, introduce yourself and let us know where you would like to contribute - https://github.com/ipfs/pm/#all-hands-call 53 | - Hack with IPFS and show us what you made! The All Hands call is also the perfect venue for demos, join in and show us what you built 54 | - Join the discussion at http://discuss.ipfs.io/ and help users finding their answers. 55 | - Join the [⚡️ⒿⓈ Core Dev Team Weekly Sync 🙌🏽](https://github.com/ipfs/pm/issues/650) and be part of the Sprint action! 56 | 57 | # ⁉️ Do you have questions? 58 | 59 | The best place to ask your questions about IPFS, how it works and what you can do with it is at [discuss.ipfs.io](http://discuss.ipfs.io). We are also available at the #ipfs channel on Freenode. 60 | -------------------------------------------------------------------------------- /content/post/036-js-libp2p-0.24.md: -------------------------------------------------------------------------------- 1 | --- 2 | date: 2018-11-16 3 | url: /55-js-libp2p-0-24/ 4 | title: js-libp2p 0.24.0 released 5 | author: Jacob Heun 6 | --- 7 | 8 | 9 | 10 | 11 | # 🔦 Highlights 12 | ## 🚦 Custom Content/Peer Routing Support 13 | Libp2p will now support custom content and peer routers, which will enable users to better customize their DHT experience. The new release allows for using the new [Delegated Peer Routing](https://github.com/libp2p/js-libp2p-delegated-peer-routing) and [Delegated Content Routing](https://github.com/libp2p/js-libp2p-delegated-content-routing) modules to leverage an external node's DHT instead of or in conjunction with their own. This enables nodes in more resource restricted environments to use an external DHT instead of running their own, which can be very resource intensive. 14 | 15 | ## 🔌 Relay enabled by default 16 | In an effort to improve default connectivity, circuit relay is now enabled by default. Hop is still disabled by default to prevent relaying traffic for other nodes out of the box, as this is expensive for the node. By enabling circuit relay by default, nodes will now be able to accept and dial to other circuit relay nodes. This improves a nodes default ability to communicate in isolated environments. 17 | 18 | ## 🤖 State Machine 19 | Libp2p is now a state machine. When starting and stopping the node you can now listen for the `stop` and `start` events. Libp2p also exposes a new method, `dialFSM`, which calls back with a [Connection State Machine](https://github.com/libp2p/js-libp2p-switch#connection-state-machine). This gives users the ability to listen to more events on individual connections. You can find out more about these events in [libp2p-switch readme](https://github.com/libp2p/js-libp2p-switch#connection-state-machine). 20 | 21 | # 🏗 API Changes 22 | - Added method `dialFSM(peer, protocol, callback)` which allows users to hook into more connection level activity. You can read more about it in the [readme](https://github.com/libp2p/js-libp2p#libp2pdialfsmpeer-protocol-callback). 23 | - Libp2p now emits `start` and `stop` events on node start and stop respectively. 24 | - Callbacks for `.start()` and `.stop()` are now optional. You can instead listen to the `error`, `start`, and `stop` events. 25 | 26 | # 🙌🏽 Want to contribute? 27 | 28 | Would you like to contribute to the libp2p project and don't know how? Well, there are a few places you can get started: 29 | 30 | - Check the issues with the `help wanted` label at the Ready column in our waffle board - https://waffle.io/libp2p/js-libp2p?label=help%20wanted 31 | - Join an IPFS All Hands, introduce yourself and let us know where you would like to contribute - https://github.com/ipfs/team-mgmt#weekly-ipfs-all-hands 32 | - Hack with IPFS and show us what you made! The All Hands call is also the perfect venue for demos, join in and show us what you built 33 | - Join the discussion at http://discuss.ipfs.io/ and help users finding their answers. 34 | - Join the [⚡️ⒿⓈ Core Dev Team Weekly Sync 🙌🏽 ](https://github.com/ipfs/team-mgmt/issues/650) and be part of the Sprint action! 35 | 36 | # ⁉️ Do you have questions? 37 | 38 | The best place to ask your questions about libp2p, how it works and what you can do with it is at [discuss.ipfs.io](http://discuss.ipfs.io). We are also available at the #libp2p channel on Freenode. 39 | 40 | That's all for now! 41 | -------------------------------------------------------------------------------- /content/post/037-http-client-rename.md: -------------------------------------------------------------------------------- 1 | --- 2 | date: 2018-12-03 3 | url: /58-http-client-rename/ 4 | title: The HTTP client libraries are being renamed! 5 | author: Alan Shaw 6 | --- 7 | 8 | 👋 hey everyone! If you're using one of the many HTTP client libraries for IPFS then this blog post is for you! 9 | 10 | The important news is that we're renaming the HTTP client libraries from `ipfs-api` to `ipfs-http-client`. I know, it's longer. BUT, and hear me out - it's SOOO much better at describing what the module is. 11 | 12 | In the past people have been baffled and outraged thinking `ipfs-api` is THE implementation of IPFS, when it's not, it's just a client to the HTTP API that IPFS exposes. We finally said, "Enough is enough! The people have been confused for far too long and we must change the name! We owe them this much!", and with the utterance of those fabled words the gears were set in motion and this very blog post was committed to ~~stone~~ Github. 13 | 14 | The JS module is DONE! You can still install `ipfs-api` with npm, but you'll get a deprecation notice and no further updates will be published under that name. 15 | 16 | Use `npm install ipfs-http-client` from now on! Don't delay ⏰, update your `package.json`'s today! 17 | 18 | You can also check on the progress over at https://github.com/ipfs/ipfs/issues/374 19 | -------------------------------------------------------------------------------- /content/post/041-ann-ipfs-camp.md: -------------------------------------------------------------------------------- 1 | --- 2 | date: 2019-02-28 3 | url: /72-ann-ipfs-camp/ 4 | tags: event, camp, community 5 | title: Announcing, the 1st ever 🌌 IPFS Camp, Jun 27-30 🏕 6 | author: David Dias, Angie Maguire, Chris Waring and Jamie Nicholson 7 | --- 8 | 9 |
10 | 11 | ### The IPFS Project is thrilled to invite you to a new event we’ve been baking for the IPFS Community, the **🌌 IPFS Camp 🏕**. A three day hacker retreat for the builders of the Distributed Web that will happen between June 27th to 30th. 12 | 13 |
14 | 15 |
16 | 17 | 18 | 19 |
20 | 21 |
22 | 23 | The Camp will bring together the Core Developers and Contributors to the IPFS project, Community Leaders, Builders on of the Distributed Web and you! The event will build on top of the successful IPFS Developer Meetings in Berlin last year and add a full immersive experience for its attendees and contributors. 24 | 25 | Join us on 27-30th June at the beautiful Campus La Mola in Barcelona for an action-packed program of workshops, talks and deep dives on everything IPFS. 26 | 27 | ![](https://ipfs.io/ipfs/QmUiucP3oRVnqvuM6hnrF9D5H6tRSeVhyWk6ggkhf4ebEH) 28 | 29 | Registration is a 2-step process. The 1st step is an application were you can tell us why you are excited to attend the camp and what you would like to share with the other attendees. The next step is a review and selection of the best applications by the IPFS team. If you’re application is selected we’ll send you a link to register by April 30th. IPFS Camp is limited to 150 hackers. 30 | 31 | Learn more about the camp and apply to attend **https://camp.ipfs.io/register**. 32 | 33 | Put your space boots on and get ready for a very unique InterPlanetary Adventure! Follow [camp.ipfs.io](https://camp.ipfs.io) and [@ipfsbot](https://twitter.com/ipfsbot) for future updates. 34 | -------------------------------------------------------------------------------- /content/post/042-lisbon-hack-week.md: -------------------------------------------------------------------------------- 1 | --- 2 | date: 2019-03-25 3 | url: /74-lisbon-hack-week/ 4 | tags: hack week ipfs libp2p community researchers 5 | title: 2018 IPFS Hack Week in Lisbon 6 | author: André Cruz 7 | --- 8 | 9 | In the week of May 21, 2018, we hosted one more Hack Week in the sunny city of Lisbon. 10 | 11 | The week was great for core developers, contributors and researchers to spend quality time together and work in a fast paced synchronous format towards solving concrete problems. It was incredible to see ideas and solutions flourishing for open problems we've been thinking for a while. The hacker spirit was strong throughout the entire week, culminating in a "Show Me What You Got" presentation to report back on decisions and demos. 12 | 13 | The majority of discussions and collaborations were around IPFS, libp2p and applications built on top of them, but we also hosted a [CRDT Research meetup](https://blog.ipfs.io/67-crdt-research-meetup) on the second day - check out the video playlist [here](https://www.youtube.com/playlist?list=PLuhRWgmPaHtTVkko1ZTn-qcGb-n6EqHff). 14 | 15 | Didn't have a chance to attend? No worries, we got your back. Many of the report-back presentations were recorded so that you can learn about what got developed, designed and decided. We have compiled them into a [YouTube playlist](https://www.youtube.com/playlist?list=PLuhRWgmPaHtR1hDEAKYXtUguNBkg2qceQ) for your viewing pleasure. You can see them all here: 16 | 17 | - [**Aegir Browser** - Hugo Dias](https://youtu.be/SxYx6IiigIc) 18 | - [**Building a dApp** - André Cruz, André Sousa](https://youtu.be/wKoLS_8pFb0) 19 | - [**Demo of Rust-libp2p** - Pierre Krieger](https://youtu.be/cMCy7ZfxOtQ) 20 | - [**Files Exchange Example** - Diogo Silva](https://youtu.be/WartUw3dD5U) 21 | - [**Flow Types for IPFS** - Volker Mische](https://youtu.be/YPt28cHQwkg) 22 | - [**libp2p Project Early Observations** - Mike Goelzer](https://youtu.be/WWOZrP-QMXQ) 23 | - [**Preview: IPLD Explorer v1** - Oli Evans](https://youtu.be/P9HnZslts6Q) 24 | - [**P2P Testing** - Mathias Buus](https://youtu.be/rOFHwifVH-I) 25 | - [**Peer-Pad: Authentification with Ethereum** - Pedro Teixeira, Joao Santos](https://youtu.be/yc10xRifTmQ) 26 | - [**Prop Tests** - Yoshua Wuyts](https://youtu.be/EPgtvKMF7VQ) 27 | - [**RGA @ -CRDT** - Pedro Teixeira](https://youtu.be/ON_L_B7OJZM) 28 | - [**Service Worker Gateway (IPFS Node Inside a Service Worker)** - Vasco Santos](https://youtu.be/yg1yvylXEC0) 29 | 30 | We hope you enjoy and see you in future Hack Weeks! 31 | -------------------------------------------------------------------------------- /content/post/054-go-ipfs-0.4.22.md: -------------------------------------------------------------------------------- 1 | --- 2 | date: 2019-08-13 3 | url: /054-go-ipfs-0.4.22/ 4 | title: go-ipfs 0.4.22 released 5 | author: Steven Allen 6 | --- 7 | 8 | **We've released a PATCH version of go-ipfs based on 0.4.21 containing some critical fixes.** 9 | 10 | The IPFS network has scaled to the point where small changes can have a wide-reaching impact on the entire network. To keep this situation from escalating, we've put a hold on releasing new features until we can improve our [release process](https://github.com/ipfs/go-ipfs/blob/master/docs/releases.md) (which we've trialed in this release) and [testing procedures](https://github.com/ipfs/go-ipfs/issues/6483). 11 | 12 | You can read more about the new release process in the [release process blog post]({{< relref "051-new-ipfs-release-process.md" >}}). 13 | 14 | This release includes fixes for the following regressions: 15 | 16 | 1. A major bitswap throughput regression introduced in 0.4.21 ([ipfs/go-ipfs#6442](https://github.com/ipfs/go-ipfs/issues/6442)). 17 | 2. High bitswap CPU usage when connected to many (e.g. 10,000) peers. See [ipfs/go-bitswap#154](https://github.com/ipfs/go-bitswap/issues/154). 18 | 2. The local network discovery service sometimes initializes before the networking module, causing it to announce the wrong addresses and sometimes complain about not being able to determine the IP address ([ipfs/go-ipfs#6415](https://github.com/ipfs/go-ipfs/pull/6415)). 19 | 20 | It also includes fixes for: 21 | 22 | 1. Pins not being persisted after `ipfs block add --pin` ([ipfs/go-ipfs#6441](https://github.com/ipfs/go-ipfs/pull/6441)). 23 | 2. Panic due to concurrent map access when adding and listing pins at the same time ([ipfs/go-ipfs#6419](https://github.com/ipfs/go-ipfs/pull/6419)). 24 | 3. Potential pin-set corruption given a concurrent `ipfs repo gc` and `ipfs pin rm` ([ipfs/go-ipfs#6444](https://github.com/ipfs/go-ipfs/pull/6444)). 25 | 4. Build failure due to a deleted git tag in one of our dependencies ([ipfs/go-ds-badger#64](https://github.com/ipfs/go-ds-badger/pull/65)). 26 | 27 | Thanks to: 28 | 29 | * [@hannahhoward](https://github.com/hannahhoward) for fixing both bitswap issues. 30 | * [@sanderpick](https://github.com/sanderpick) for catching and fixing the local discovery bug. 31 | * [@campoy](https://github.com/campoy) for fixing the build issue. 32 | 33 | 34 | # ❤️ Contributors 35 | 36 | Would you like to contribute to the IPFS project and don't know how? Well, there are a few places you can get started: 37 | 38 | - Check the issues with the `help wanted` label in the [go-ipfs repo](https://github.com/ipfs/go-ipfs/issues?q=is%3Aopen+is%3Aissue+label%3A%22help+wanted%22) 39 | - Join an IPFS All Hands, introduce yourself and let us know where you would like to contribute - https://github.com/ipfs/team-mgmt/#weekly-ipfs-all-hands 40 | - Hack with IPFS and show us what you made! The All Hands call is also the perfect venue for demos, join in and show us what you built 41 | - Join the discussion at [discuss.ipfs.io](https://discuss.ipfs.io/) and help users finding their answers. 42 | - Join the [🚀 IPFS Core Implementations Weekly Sync 🛰](https://github.com/ipfs/team-mgmt/issues/992) and be part of the action! 43 | 44 | # ⁉️ Do you have questions? 45 | 46 | The best place to ask your questions about IPFS, how it works and what you can do with it is at [discuss.ipfs.io](http://discuss.ipfs.io). We are also available at the `#ipfs` channel on Freenode, which is also [accessible through our Matrix bridge](https://riot.im/app/#/room/#freenode_#ipfs:matrix.org). 47 | 48 | 49 | -------------------------------------------------------------------------------- /content/post/056-pubsub-in-the-browser.md: -------------------------------------------------------------------------------- 1 | --- 2 | date: 2019-08-29 3 | url: /2019-08-29-pubsub-in-the-browser/ 4 | title: PubSub in the browser with the JS IPFS HTTP API client 5 | author: Alan Shaw 6 | --- 7 | 8 | > EXCELLENT NEWS! You can now pubsub with the JS IPFS HTTP API client in the BROWSER! 9 | 10 | Due to [boring technical reasons](https://github.com/ipfs/js-ipfs-http-client/issues/518) it’s previously not been possible to support [pubsub](https://en.wikipedia.org/wiki/Publish%E2%80%93subscribe_pattern) over the [HTTP API](https://docs.ipfs.io/reference/api/http/) in the browser. Now that the [fetch API](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) supports cancelation, and has done so for a while, pubsub support has arrived! Hooray \o/ 11 | 12 | There’s also a brand new example application that you can play with showing how to use pubsub in the browser: 13 | 14 | [github.com/ipfs/js-ipfs-http-client/examples/browser-pubsub](https://github.com/ipfs/js-ipfs-http-client/tree/master/examples/browser-pubsub) 15 | 16 | ![Screenshot of PubSub in the browser example app](/056-pubsub-in-the-browser/demo-screenshot.png) 17 | 18 | This was made possible by the experimentation done in a [“lite” http client](https://github.com/ipfs-shipyard/js-ipfs-http-client-lite) I was working on, which was originally meant to be just really really small (it’s currently ~13kb gzipped vs ~200kb for the regular client). To make it small we needed to switch to using the fetch API but I soon realized that this opened up a bunch of other opportunities, like enabling pubsub. We also get easily cancelable requests, request timeouts, custom fetch implementations and a switch to async/await and async iterators. 19 | 20 | I originally demoed it in the lite client here: 21 | 22 | 23 | [![Watch video](/056-pubsub-in-the-browser/ipfs-pubsub-in-browser-video.jpg)](https://www.youtube.com/watch?v=NZb6ybkAYWs) 24 | 25 | 26 | The lite client has been a great proving ground for ensuring the “hard parts” of the API are now possible using browser native APIs. I’ll be applying more of the learnings from there to the regular http client in the near future, which should hopefully result in a smaller bundle size, as well as more cool new features like this one. 27 | 28 | Version 34 of `ipfs-http-client` is out now! https://www.npmjs.com/package/ipfs-http-client/v/34.0.0 29 | 30 | Thanks for reading 😘 31 | -------------------------------------------------------------------------------- /content/post/073-073-go-ipfs-as-a-library.md: -------------------------------------------------------------------------------- 1 | --- 2 | date: 2019-10-29 3 | url: /073-go-ipfs-as-a-library/ 4 | title: A new Tutorial has been created - Learn how to use go-ipfs as a Library 5 | author: David Dias 6 | --- 7 | 8 | The title says it all. Learn how to use [go-ipfs as a Library with the new Tutorial](https://github.com/ipfs/go-ipfs/tree/master/docs/examples/go-ipfs-as-a-library) and take full advantage of the [go-ipfs Core API](https://godoc.org/github.com/ipfs/interface-go-ipfs-core). 9 | 10 | ![](https://ipfs.io/ipfs/QmWgSVDmVDCPcf8zMHzXJTnDf6SFf9FpWXGDpXMozaBgQ6/go-ipfs-as-a-library.gif) 11 | 12 | Let us know what you think by opening a topic with your questions and feedback at https://discuss.ipfs.io. 13 | 14 | Invite your friends to share it and help us broadcast it to reach a wider audience of DWeb developers 15 | 16 | 17 | 18 | 19 | Can't wait to see what you build with it! Happy hacking! 20 | -------------------------------------------------------------------------------- /content/post/076-ipfs-docs-beta.md: -------------------------------------------------------------------------------- 1 | --- 2 | date: 2020-01-07 3 | url: /2020-01-07-ipfs-docs-beta/ 4 | title: The new IPFS Docs beta is live! 📚 🆕 5 | author: Jessica Schilling 6 | header_image: 076-ipfs-docs-beta.png 7 | --- 8 | 9 | **We’re excited to announce [the new IPFS documentation site is live in beta](https://docs.ipfs.io/)!** The doors are open, and just like any housewarming, you’re cordially invited to stop by, have a look around, and let us know what you think. 10 | 11 | Screenshot of docs beta 12 |
13 | *New year, new look.* 14 | 15 | ![Mind map of docs beta nav](/076-ipfs-docs-beta/img/docs-beta-site-mindmap.png) 16 |
17 | *Here’s a mind map of how the docs beta’s navigation works.* 18 | 19 | ## 🆕 What’s new in the docs beta: 20 | - Redesigned, simple, clean interface 21 | - Better navigation 22 | - The return of search functionality 23 | 24 | 25 | ## ↗️ What’s coming up in Q1 2020 and beyond: 26 | - Enhancements to existing content 27 | - Brand-new content, including use-case scenarios, visual explainers, and more 28 | - Next-gen API documentation 29 | - Enhanced full-text search 30 | - More new features: [vote on your favorite](https://ipfs.canny.io/admin/board/docs-features)! 31 | 32 | ## 👩‍🔬 Want to get involved with the new docs beta? 33 | It’s never been easier to do something that benefits the global IPFS community! Here’s how: 34 | 35 | - [Contribute your own content](https://github.com/ipfs/docs/issues?q=is%3Aissue+is%3Aopen+label%3A%22help+wanted%22) to the new docs site to share your knowledge with others **(and note, some of these content issues have bounties attached!)** 36 | - [Become a docs beta tester](https://docs.google.com/forms/d/1LVaD1B2uyW6Ff0jfU_iQ5mCeyQcHfyQO6BDD99XAgK0/) and help us test, refine and prioritize new content and features 37 | - [Vote for your favorite new docs features](https://ipfs.canny.io/admin/board/docs-features) to help us determine what to build next 38 | -------------------------------------------------------------------------------- /content/post/077-collaborative-clusters.md: -------------------------------------------------------------------------------- 1 | --- 2 | date: 2020-01-09 3 | url: /2020-01-09-collaborative-clusters/ 4 | title: Announcing collaborative clusters 5 | author: Hector Sanjuan 6 | header_image: 077-collaborative-clusters.png 7 | --- 8 | 9 | We are very excited to announce the first set of public *collaborative 10 | clusters* and the first iteration of the 11 | [collaborative clusters website](https://collab.ipfscluster.io). 12 | 13 | *Collaborative clusters* are an easy way to join and help improving distribution 14 | and data availability of specific datasets in the IPFS Network. 15 | 16 | Using IPFS Cluster's 17 | [latest release (0.12.1)](https://cluster.ipfs.io/news/0.12.0_release/) we 18 | have set up the first of those archives: 19 | 20 | * Filecoin cluster: which will be used to pin Filecoin parameters and 21 | Filecoin objects. 22 | * Spanish books from the Gutenberg Project: a collection of Spanish literature 23 | from the [Gutenberg Project](http://www.gutenberg.org/). 24 | * IPFS Websites: a list with a few of the IPFS-universe websites (such as ipfs.io, libp2p.io). 25 | 26 | Users can join these clusters by running a single `ipfs-cluster-follow` 27 | command. You will need to have enough space available in your IPFS repository 28 | (check the size row for each cluster on the 29 | [website](https://collab.ipfscluster.io)). 30 | 31 | Instructions on how to setup and join these and, in the future, other 32 | collaborative clusters can be found at 33 | [https://collab.ipfscluster.io](https://collab.ipfscluster.io). You can stop 34 | and re-start replication whenever you want. Also, here's a quick video to show 35 | how easy it is: 36 | 37 | 38 | 39 | We hope that collaborative clusters will allow the community to participate in 40 | the distribution and seeding of data they care about, enabling easy "mirroring" 41 | on the IPFS network, along with unlocking *Content-Distribution-Network (CDN)* 42 | properties. 43 | 44 | ## Creating your own Clusters 45 | 46 | Collaborative clusters are no different from normal IPFS Clusters, with the exception that 47 | they include a list of *trusted peers* (peers that can modify the cluster pinset). 48 | 49 | The process of setting up one of these and letting other peers easily join as 50 | followers is documented at 51 | [https://cluster.ipfs.io/documentation/collaborative/](https://cluster.ipfs.io/documentation/collaborative/). 52 | 53 | ## About the IPFS Cluster project 54 | 55 | The [IPFS Cluster project](https://cluster.ipfs.io) provides data 56 | orchestration across a swarm of IPFS daemons by allocating, replicating and 57 | tracking a global pinset distributed among multiple peers. 58 | 59 | For full documentation on how to setup and operate clusters, see 60 | [https://cluster.ipfs.io/documentation](https://cluster.ipfs.io/documentation). 61 | -------------------------------------------------------------------------------- /content/post/082-ethdenver-2020.md: -------------------------------------------------------------------------------- 1 | --- 2 | date: 2020-02-07 3 | url: /2020-02-07-ethdenver-2020/ 4 | title: Hack with us at ETHDenver 5 | author: Jenn Turner 6 | header_image: 082-ethdenver-2020.png 7 | --- 8 | 9 | ![IPFS at ETHDenver 2020](https://user-images.githubusercontent.com/50103/73981264-bbe13d00-48e6-11ea-8446-033257df44bc.png) 10 | 11 | Next week, the IPFS team will be heading to Denver, Colorado for [ETHDenver](https://www.ethdenver.com/), one of the biggest Ethereum and decentralized web developer-focused events in the US. We’re very excited to connect with the dweb community during a week full of presentations, workshops, [#BUIDLathon](https://www.ethdenver.com/buidlweek/)-ing, and community gathering. 12 | 13 | On Thursday, February 13, the IPFS Community is hosting the [Distributed Networks Summit](https://www.eventbrite.com/e/distributed-networks-summit-ipfs-friends-tickets-86959928487?aff=protocollabs), featuring speakers and workshops from IPFS Core, Protocol Labs, Textile, ProtoSchool, 3Box, RTrade Technologies, Pinata, Althea, Quorum Control, Kauri, and more! [Register to attend](https://www.eventbrite.com/e/distributed-networks-summit-ipfs-friends-tickets-86959928487?aff=protocollabs) so you can figure out how to implement IPFS in your dapp, with the advice from leading experts. Think of it as our early Valentine’s Day gift from the IPFS community to you. 💝 14 | 15 | ## Did we mention we have bounties? 16 | 17 | We’ll have bounties for using and improving IPFS, and building IPFS or our community’s libraries and services into your dapps—all managed through the ETHDenver DAO. ETHDenver will announce the bounties on February 10th, so until then take a look at [awesome.ipfs.io](https://awesome.ipfs.io/) to get your mental propellers spinning! 18 | 19 | ## Join us at the following events 20 | 21 | * [The Pre-Hack Social](https://www.eventbrite.com/e/the-pre-hack-social-tickets-90279882559) on Wednesday, February 12 22 | 23 | * All day long at the [Decentralized Network Summit](https://www.eventbrite.com/e/distributed-networks-summit-ipfs-friends-tickets-86959928487?aff=protocollabs), Thursday, February 13 24 | 25 | * Stop by the IPFS Booth at [ETHDenver](https://www.ethdenver.com/) all day Friday, February 14 through Sunday, February 16. 26 | 27 | You can still [sign up to attend at ETHDenver.com](https://ethdenver.devfolio.co/). 28 | 29 | 2019 took the IPFS Community in so many inspiring directions. We can’t wait to see where the community is headed in 2020. See you there! 30 | -------------------------------------------------------------------------------- /content/post/100-june-meetup-recap.md: -------------------------------------------------------------------------------- 1 | --- 2 | date: 2020-06-23 3 | url: /2020-06-23-june-meetup-recap/ 4 | title: Watch exclusive content from our June meetup! 5 | author: Jenn Turner 6 | tags: Events, Video 7 | --- 8 | 9 | 10 |
11 |
12 | 13 | The IPFS community gathered for [a virtual meetup last week](https://www.youtube.com/playlist?list=PLuhRWgmPaHtToVYaDkd6ZTwB2Lo30s1vB) to celebrate the progress made since the major [go-ipfs 0.5 launch](https://blog.ipfs.io/2020-04-28-go-ipfs-0-5-0/) and take a look at where the ecosystem is headed for the duration of 2020. 14 | 15 | If you missed it, you can catch up on all of the presentations, from Alex Potsides’ walk through what’s new in [js-ipfs](https://blog.ipfs.io/2020-06-08-js-ipfs-0-46/) to special guest Daniel Buchner’s explainer on [Microsoft’s ION](https://blog.ipfs.io/2020-06-11-identity-ipfs-ion/). You also won’t want to miss the lightning talks from folks at Textile, AvionDB, Filecoin, IPLD, and more! 16 | 17 | To view this exclusive content, head over to the [IPFS YouTube page](https://www.youtube.com/channel/UCdjsUXJ3QawK4O5L1kqqsew), click the subscribe button, and enjoy! To find out about future community events and project news, [subscribe to the IPFS Weekly newsletter](https://ipfs.us4.list-manage.com/subscribe?u=25473244c7d18b897f5a1ff6b&id=cad54b2230), in your inbox every Tuesday. 18 | 19 | -------------------------------------------------------------------------------- /content/post/102-case-study-audius.md: -------------------------------------------------------------------------------- 1 | --- 2 | date: 2020-07-09 3 | url: /2020-07-09-case-study-audius/ 4 | title: Introducing the IPFS Case Study Series! 5 | author: Jessica Schilling 6 | tags: casestudy, case-study, Audius, examples, using-ipfs, collaborators 7 | header_image: 102-case-study-audius.png 8 | --- 9 | 10 | ![IPFS Case Study Seriew - Audius](/img/101-case-study-audius/case-study-audius.jpg) 11 | 12 | ## You asked, we delivered! 13 | 14 | We've heard requests from avid docs readers and IPFS newcomers alike for more high-level info about real-world problem-solving using IPFS — including how those who are already extensively building on IPFS made the choices that got them to where they are today. In reply, we'd like to introduce the **IPFS Case Study Series**! 15 | 16 | ## IPFS x Audius: A story of harmony 17 | 18 | We're pleased to kick off our IPFS Case Study Series with a profile of our friends at [Audius](http://audius.co/), the decentralized music and audio sharing platform designed to give artists and creators a direct link with their listeners. To create their censorship-resistant, privacy-friendly platform, it was key to have a distributed cloud storage network as the basis for the system. Audius uses IPFS as the core decentralized storage component in their mission to give everyone the freedom to share, monetize, and listen to any audio. 19 | 20 | [Head over to the IPFS Docs to read the full case study](https://docs.ipfs.io/concepts/case-study-audius/), but here's a quick quote to whet your whistle: 21 | 22 | > In 2018, when Audius was looking into decentralized storage, they needed a system that would enable routing and addressing of large amounts of content in a decentralized way for their content streaming network. At the time, IPFS had the only system that fit their needs for decentralization ... Now, after two years on the network, Audius has found that IPFS has consistently performed and provided the flexibility and resilience needed for their network. "The lack of surprises is an advantage," says Hareesh Nagaraj, senior engineer at Audius. It’s been reliable the whole time." 23 | 24 | Have a look at the [full case study](https://docs.ipfs.io/concepts/case-study-audius/) now to learn why IPFS was the best fit for Audius' needs, where IPFS fits into the Audius tech stack, and the concrete gains IPFS has helped the Audius team achieve. We hope you'll be inspired! 25 | 26 | ## Up next ... 27 | 28 | We've got more case studies in the works, so keep an eye on the IPFS Blog (or sign up for the [IPFS Weekly](https://ipfs.us4.list-manage.com/subscribe?u=25473244c7d18b897f5a1ff6b&id=cad54b2230) newsletter!) so you don't miss a single one. 29 | 30 | Got an idea for a project or product that would make a great IPFS case study? Leave your thoughts in the comments. 31 | -------------------------------------------------------------------------------- /content/post/109-ipfs-meetup-sep2020.md: -------------------------------------------------------------------------------- 1 | --- 2 | date: 2020-09-18 3 | url: /2020-09-18-ipfs-meetup-sep2020/ 4 | title: The IPFS Remember September 2020 Meetup 5 | author: Dietrich Ayala 6 | tags: ipfs, events, meetups 7 | --- 8 | 9 | Fall is upon us, and so the IPFS community met again to share tales of glory and challenges surmounted as we collectively work to overthrow the hegemony of location-based addressing and the notion that security can only be derived from trust models defined by centralized authorities! 10 | 11 | ## 🚢 Go-ipfs 0.7 Release Preview 12 | 13 | Our host Jacob Heun set the stage with some social calisthenics and a review of the [code of conduct](https://github.com/ipfs/community/blob/master/code-of-conduct.md), before introducing the first speaker - Adin Schmahmann, go-ipfs lead, who gave a preview of go-ipfs 0.7 which is due to release this week: 14 | 15 | 16 | 17 | ## 🛠 IPFS Recovery 18 | 19 | The second talk was a team from the recent HackFS event, a month of hacking hosted by Protocol Labs and EthGlobal, resulting in [138 projects](https://hack.ethglobal.co/hackfs/showcase)! 20 | 21 | Govind Mohan and Hlib Kanunnikov shared their work on [IPFS Recovery](https://hack.ethglobal.co/showcase/ipfs-recovery-rec909D6romwHglDV), a module for ensuring data availability despite damage to it or the network, using [erasure coding](https://en.wikipedia.org/wiki/Erasure_code). 22 | 23 | 24 | 25 | ## 🏭 Building Consumer Products on IPFS & Filecoin 26 | 27 | The final talk before the lightning demos was from Raullen Chen, co-founder and CEO of IoTeX. The upcoming Ucam home security camera that IoTeX is making uses IPFS for firmware updates, and they plan to incorporate IPFS and Filecoin into more of their product architecture over time. 28 | 29 | Raullen discussed the challenges and opportunities in bringing consumer hardware products to market using IPFS and Filecoin. 30 | 31 | 32 | 33 | ## 📚 IPFS Case Study Series 34 | 35 | The sole brave lightning demoer was Jessica Schilling, who has been working on a series of case studies from projects who are building and shipping products and services on IPFS. Come for the dweb, stay for the rhymes. 36 | 37 | 38 | 39 | ## 🎉 Thanks again! 40 | 41 | Thanks to everyone who joined, all our speakers and everyone who's reading this or watching the IPFS channel on YouTube! 42 | 43 | See you in October! Sign up for the [IPFS Meetup group](https://www.meetup.com/San-Francisco-IPFS/) to get notified automatically about it. 44 | 45 | Have a project you want to share with the community? [Send us an email](mailto:ipfs-community@protocol.ai) to sign up for a talk or lightning demo! 46 | 47 | And if you cannot wait until October for more IPFS goodness, [subscribe to the IPFS weekly newsletter](http://eepurl.com/gL2Pi5) to get releases, project announcements and job opportunities in your inbox 💌. 48 | -------------------------------------------------------------------------------- /content/post/114-ipfs-in-2021.md: -------------------------------------------------------------------------------- 1 | --- 2 | date: 2020-12-21 3 | url: /2020-12-21-ipfs-in-2021/ 4 | title: IPFS in 2021 - Thank You for Your Proposals! 5 | author: David Choi & Kadir Topal 6 | tags: ipfs, rfp 7 | header_image: 114-ipfs-2021.jpg 8 | --- 9 | 10 | In November, [we asked the IPFS community to nominate and discuss potential themes](/2020-11-19-community-rfp/) for the project to tackle in 2021. It’s been amazing to see the insight, creativity, and passion from this amazing community to better understand where the IPFS Project needs to improve, upgrade, and focus in 2021. Using the thinking surfaced, we hope to help synthesize a few broad areas of work that the project could focus on next year (and even beyond) - and share those back with the community for feedback in January. 11 | 12 | Now that the brainstorm period is over, all we can say is: **THANK YOU**! We’ve been blown away by the level of participation, thoughtfulness in discussion, and time and energy spent to help chart our shared course and priorities for next year. In just ~3 weeks, the community contributed: 13 | 14 | * **27** theme proposals, spanning all areas of the protocol from performance improvements to new features to tooling you’d like to see 15 | * **70+** comments on and 85+ reactions to these proposals 16 | * **35+** community members participating in discussion 17 | 18 | The full list of themes and discussion can be found in the [IPFS roadmap repo](https://github.com/ipfs/roadmap/issues?q=is%3Aissue+is%3Aopen+label%3A%222021+Theme+Proposal%22). 19 | 20 |
21 | Proposals 22 |
23 | 24 |
Just a handful of the proposed themes
25 | 26 | But these numbers alone don’t sufficiently illustrate the quality of discourse that was seen! The discussion on topics was rich, connecting experts and collaborators across the IPFS community. [We had nuances raised around optimal content routing strategies](https://github.com/ipfs/roadmap/issues/76)... 27 | 28 |
29 | Proposals 30 |
31 | 32 | ...saw [discussion on various ways to integrate IPFS into browsers](https://github.com/ipfs/roadmap/issues/81)... 33 | 34 |
35 | Proposals 36 |
37 | 38 | ...and even a [meetup organized to discuss approaches to upgrading IPFS’s security model](https://github.com/ipfs/roadmap/issues/65!) 39 | 40 |
41 | Proposals 42 |
43 | 44 | Thank you again for the time, thoughtfulness, and energy you all brought to this process! 45 | 46 | ## 2021 Planning Process Timeline 📆 47 | 48 | We are still in the middle of 2021 planning! Using the community discussion, our goal is to determine a few overarching themes that can be a guiding “north star” for 2021 to best support the growing community and help the project achieve its long-term mission. Similar to last year, we expect that instead of choosing a single theme from community discussion to pursue next year, we’ll instead identify a few common threads / needs across the themes surfaced as the most important area for the project to focus next year. Further, the final themes are not intended to dictate all that the project does in 2021, but just some major areas of focus. Other areas or themes can and should still be tackled by the project and community. So consider the proposed themes “conversation starters” - and if you haven’t yet, [join the conversation](https://github.com/ipfs/roadmap/issues)! 49 | 50 | Happy holidays, and see you in 2021! -------------------------------------------------------------------------------- /content/post/120-ipfs-at-ethdenver.md: -------------------------------------------------------------------------------- 1 | --- 2 | date: 2021-02-02 3 | url: /2021-02-02-ipfs-at-ethdenver/ 4 | title: Join us at ETHDenver 2021, year of the Spork Marmot! 5 | author: Jenn Turner 6 | tags: events 7 | header_image: eth1.png 8 | snippet: Return of the IPFS Help Desk, plus join us for a full day of hacking IPFS! 9 | --- 10 | 11 |

12 | Join us at ETHDenver, where Flying Bufficorns and Spork Marmots reign free 13 |

14 | 15 | It’s hard to explain what [ETHDenver](https://www.ethdenver.com/) is, exactly. Is it a conference? Yes. Is it a hackathon? Is it a week of technical workshops directed by industry leaders? Yes. Is it an art exhibition? Also, yes. Is it a live dj set? Again, yes. But even those labels don’t do justice to the magic that happens when all of those things combine and settle on the Denver tech scene. 16 | 17 | That is why we’re so excited to be part of this year’s ETHDenver, which is 100% virtual so everyone around the globe can experience the magic for themselves! In this, the year of the Spork Marmot, attendees worldwide will be able to participate in one of North America’s largest Ethereum gatherings: an innovation festival and #BUIDLathon, including a virtual replication of the famed Sports Castle, with a built-in game experience for IRL swag, and more. 18 | 19 |

20 | A wild Bufficorn appears at the IPFS Help Desk in 2020 21 |

22 | 23 | In years past, the IPFS community has had a large presence at ETHDenver, partially due to the incredibly welcoming and encouraging decentralization community built locally in Denver. [Last year](https://blog.ipfs.io/2020-02-07-ethdenver-2020/), we were truly blown away by how much we saw the ETHDenver community embrace IPFS. After all was said and done: 24 | 25 | * 24 out of 52 submissions utilized IPFS in their project, with 26 | * 8 of the 16 finalist projects, and 27 | * 3 out of the 5 winners triumphing, having used IPFS. 28 | * And 80+ bounties were awarded for using IPFS! 29 | 30 | Not only that, last year [Cryptorado](https://cryptorado.org/#/) organized the [Decentralized Network Summit](https://dnsummit.cryptorado.org/), inviting the IPFS community to a day full of speakers and workshops from the folks at 3Box, NEAR, Unstoppable Domains, Pinata, Tupelo, Textile, Kauri, The Graph and more, drawing 100+ attendees. It was a wonderful day full of meeting and making new friends, enjoying the company of old ones, and most importantly, intriguing conversations. 31 | 32 |

33 | The first IPFS Help Desk, hosted by Pinata 34 |

35 | 36 | So in that spirit of ETHDenvers past, the IPFS Help Desk, spearheaded by [Pinata back in 2019](https://twitter.com/IPFSPinata/status/1096806565116399616), will be back this year, helmed by your favorite IPFS community folks, so be sure to come visit us in the **Spork Shill Zone**, right next to the 🥰 Textile booth 🥰, every day that the Virtual Castle is open and ask all of your questions, from hacking to hoping, and everything in between. 37 | 38 | Since we can’t be together in Denver for another full day of Decentralized Summiting, we decided to hack together virtually on Tuesday, February 9, starting at the IPFS Help Desk, and moving to Zoom for 2 sessions after the Virtual Castle closes for the day. 39 | 40 | **Hack the Help Desk! Tuesday, February 9** (all times local to Denver, Mountain Time) 41 | 42 | * Session 1: Virtual Castle at Help Desk - 9am to 11am 43 | * Session 2: TBD Zoom - 11am to 1pm 44 | * Session 3: TBD Zoom - 1pm to 3pm 45 | 46 | We are so excited to be a part of this amazing experience once again, and stay tuned for more information on our bounties and IPFS community presentations! We can’t wait to share more with you very soon, but for now, make sure you won’t miss out! 47 | 48 | Join us! [Register to attend ETHDenver 2021](https://www.ethdenver.com/). 49 | 50 |

51 | Join us at the Virtual Sports Castle for the year of the Spork Marmot 52 |

53 | -------------------------------------------------------------------------------- /content/post/122-ethdenver-bounties.md: -------------------------------------------------------------------------------- 1 | --- 2 | date: 2021-02-04 3 | url: /2021-02-04-ethdenver-bounties/ 4 | title: Hey ETHDenver, hack on IPFS with these bounties! 5 | author: Jenn Turner 6 | tags: events 7 | header_image: eth2.png 8 | snippet: Win prizes of up to $500 for building on IPFS, especially when you build with the recent browser integrations at ETHDenver. 9 | --- 10 | 11 | [ETHDenver 2021](https://www.ethdenver.com/) is in full swing, and as we mentioned in our [last post](https://blog.ipfs.io/2020-02-07-ethdenver-2020/) the IPFS community is very stoked to get to be a part of this unique and awesome event! To encourage folks to try IPFS for the first time, or the second time, or the forty-second time, we’ve put together the following bounties to inspire your creativity and challenge your #BUILDathon skills. 12 | 13 | ## IPFS Bounties for ETHDenver 2021 14 | 15 | * 🦁 **Get Brave with IPFS**, $50: Using and demo’ing IPFS in your project with Brave desktop browser, Resources: https://brave.com/ipfs-support/. 16 | * ⭕️ **Go browsing with Opera + IPFS**, $50: Using and demo’ing IPFS in your project with Opera Android or Opera Touch on iOS, Resources: https://blog.ipfs.io/2020-03-30-ipfs-in-opera-for-android/ 17 | * 📌 **IPFS Pinning Services API**, $500: Show us your best use of the new IPFS Pinning Services API, Resources: https://ipfs.github.io/pinning-services-api-spec/ 18 | * 👻 **Hack Phantom Drift**, $500: Build libp2p node visualizers on the DHT, Resources: https://github.com/libp2p/go-libp2p/issues/947 19 | 20 | ### Best use of IPFS for X, $500 each, [resources here](https://docs.ipfs.io/concepts/usage-ideas-examples/) 21 | * 🤝 **Collaboration**: Let IPFS coordinate the flow of data between you and your colleagues, even when working offline or on a local network. 22 | * 📦 **Asset storage**: By storing small scripts or big databases of your project on IPFS, and depending on your architecture, you can yield several benefits. 23 | * 👾 **Gaming**: We want serverless online gaming, and we want it now! 24 | * 👷 **IPFS as infrastructure**: Using IPFS allows you to abstract away a lot of the complexity of coordination between machines. No matter your architecture IPFS handles load balancing, de-duplication, caching, and high availability out-of-the-box. 25 | * 🥷 **Decentralized identity**: Decentralized identity is a hot topic, and IPFS is one of the core technologies a lot of engineers build around. 26 | * 🙏 **Decentralizing the Web itself**: Some core pieces of the web are still centralized, making it more prone to break or being censored. IPFS can help and make the web more resilient. 27 | 28 | If you have questions, please reach out at the IPFS Help Desk, located in the Spork Shill Zone, right next to the Textile booth. Our community will be happy to help you! 29 | 30 | ## Need a break from hacking? 31 | Be sure to check out these IPFS presentations during your breather. 32 | 33 | ### Friday, February 5 34 | 1PM MST [Tune in on the Mainnet Livestream](http://twitch.tv/ethereumdenver) 35 | 36 | * **IPFS: The Global CID**, technical workshop 37 | * Join Matt Ober, Co-founder and CTO of [Pinata](https://pinata.cloud/) for a technical glimpse into CIDs. Blockchain data is immutable and accessible in a decentralized way. Your off-chain data should be too. Learn how IPFS solves this and why the “Content Identifier” is crucial for projects storing data off-chain. 38 | ### Monday, February 8 39 | 10:15AM MST [Tune in on the Mainnet Livestream](http://twitch.tv/ethereumdenver) 40 | 41 | * **Bridging Web2 <> Web3: IPFS x Opera integration**, panel 42 | * Join Dietrich Ayala, IPFS Ecosystem Lead, Igor Mandrigin Lead Crypto Researcher at Opera, Bradley Kam, Co-Founder at Unstoppable Domains, and moderator Susie Batt, Head of Global Crypto Community at Opera, for an inside look at how browsers and decentralized technologies are teaming up to push Web3 forward. 43 | 44 | Stay tuned for talks from Textile, Ethereum Name Service, NEAR, Unstoppable Domains, Rarible, Ceramic, The Graph, 3Box Labs, AAVE, Polkadot, nuCypher, Cryptorado, Filecoin, Audius, Dappnode, Radicle, Chainlink, ConsenSys, and more! 45 | 46 | So join us for talks, fun times in the [ETHDenver Discord](https://discord.gg/urUs9tqSXS) #ipfs channel, and—if you need it—come ask for help at the IPFS help desk! Happy BUIDLing, ETHDenver! 47 | -------------------------------------------------------------------------------- /content/post/123-opera-ios-and-ipfs.md: -------------------------------------------------------------------------------- 1 | --- 2 | date: 2021-02-08 3 | url: /2021-02-08-opera-ios-and-ipfs/ 4 | title: IPFS in Opera Touch on iOS! 5 | author: Dietrich Ayala 6 | tags: ipfs, browsers, opera, mobile 7 | header_image: opera-ipfs-header.png 8 | snippet: Opera has now added support for IPFS addressing to Opera Touch, their mobile browser for iOS. 9 | 10 | --- 11 | 12 | 13 |

14 | IPFS in Opera Touch for iOS 15 |

16 | 17 | 18 | In 2020 we announced a big moment for IPFS: The first official support of IPFS protocol addressing in a major browser, when [Opera released IPFS support in their Android browser](https://blog.ipfs.io/2020-03-30-ipfs-in-opera-for-android/). This was an important step in IPFS browser support generally, by building interest and momentum. We didn’t stop there, and we’ve got not just one… BUT TWO releases to share with you today! 19 | 20 | First, Opera has now added support for IPFS addressing to Opera Touch, their iOS browser. 21 | 22 |

23 | A screenshot of Wikipedia on IPFS in Opera Touch 24 |

25 | 26 | Second, support for IPFS addressing in Opera desktop browser for Windows, macOS, and Linux will be coming in their next release, currently planned for March 2021. 27 | 28 | As a special surprise for EthDenver, you can download a preview build of Opera for desktop which has IPFS addressing support! Give it a spin at [ethdenver2021.opera.com](https://ethdenver2021.opera.com). 29 | 30 | With these releases, Opera will now support `ipfs://` and `ipns://` addressing across their browser product line on all major operating systems: Windows, macOS, Linux, iOS, and Android. 31 | 32 | ## How do I use it? 33 | 34 | First, install Opera Touch on your iOS device. If you’re reading this on an iOS device, [click to install now](https://apps.apple.com/us/app/opera-touch-web-browser/id1411869974). 35 | 36 |

37 | Opera Touch in the iOS app store 38 |

39 | 40 | Then you can open content using IPFS protocol addresses, like the blog you’re reading now, Wikipedia, or this Persian room guardian by [Anya Boz](https://www.anyabozartist.com/the-persian-cat). You can easily upload files to IPFS using the [IPFS desktop application](https://docs.ipfs.io/install/ipfs-desktop/) or [Share.ipfs.io](https://share.ipfs.io). 41 | 42 | ## How does it work? 43 | 44 | Opera Touch supports navigating to addresses for `ipfs://` and `ipns://` protocol schemes, which are handled by a remote HTTP gateway. By default the gateway used is `dweb.link`, which is operated by Protocol Labs. The ability to select a different gateway is coming in the next update of Opera Touch. 45 | 46 | Native representation of IPFS addresses in browsers is important, even when the content is loaded from an HTTP gateway as IPFS URIs are resolved out of the box, without the need for any additional extensions or opt-in settings, which familiarizes users and developers with decentralized concepts of content-addressing and creates a path to readiness for when native nodes are available. 47 | 48 | ## What’s next? 49 | 50 | Opera desktop browser support for IPFS addressing will ship soon, and we’re discussing what additional features to add next to build on top of this foundation of universal addressing support across the Opera browser line. Have ideas for what you’d like to see in Opera next? Let us know on the [IPFS forums](https://discuss.ipfs.io/), or tweet your ideas to [@Opera](https://twitter.com/opera) and [@IPFS](https://twitter.com/ipfs) on Twitter! 51 | 52 | [Install Opera Touch on iOS now!](https://apps.apple.com/us/app/opera-touch-web-browser/id1411869974) 53 | -------------------------------------------------------------------------------- /content/post/124-protoschool-libp2p.md: -------------------------------------------------------------------------------- 1 | --- 2 | date: 2021-02-17 3 | url: /2021-02-17-libp2p-comes-to-protoschool/ 4 | title: libp2p comes to ProtoSchool 5 | author: Teri Chadbourne 6 | tags: protoschool, libp2p, ipfs 7 | header_image: 124-libp2p-comes-to-protoschool.png 8 | --- 9 | 10 | The [ProtoSchool](https://proto.school) team is pleased to announce the launch of a shiny new multiple-choice tutorial [introducing libp2p](https://proto.school/introduction-to-libp2p), the modular peer-to-peer networking stack that spun out of IPFS into its own first-class project and a dependency of IPFS itself. Today, IPFS focuses on _content addressing_ (i.e., finding, fetching and authenticating any piece of content in the web) while libp2p focuses on _process addressing_ (i.e., finding, connecting and authenticating any data transfer processes in the network). 11 | 12 | libp2p animation representing libp2p being extracted out of ipfs 13 | 14 | Historically, companies that produced peer-to-peer applications like Skype or BitTorrent created their own protocols to support them. Those protocols made a lot of assumptions about the environments they’d run in and the needs they’d meet, making them incredibly hard to upgrade or adapt to new environments. libp2p, however, has been extracted from its original implementation as the networking stack of IPFS, and can now serve a broad variety of use cases. While everyone building on IPFS or Filecoin is using libp2p as a dependency, many folks are using libp2p independently or embedded in other projects such as Ethereum 2.0, Polkadot, and Status.im. 15 | 16 | libp2p animation representing libp2p modularity. Each block of the libp2p logo represents a component of the libp2p network stack. 17 | 18 | libp2p takes a modular approach to addressing the many components that can make up a network stack, from transports to multiplexing and beyond. A user can choose the specific pieces they need and compose their own configuration, tailored for their use cases. All of those pieces have very well defined interfaces that enable interoperability and easy upgrades, creating a future-proof networking stack. This ecosystem of interoperable modules is key to libp2p’s versatility across multiple environments. 19 | 20 | 21 | Learn more in our code-free [Introduction to libp2p tutorial](https://proto.school/introduction-to-libp2p), or view our full [IPFS course on ProtoSchool](https://proto.school/course/ipfs) for intros to fundamental DWeb concepts, hands-on coding challenges with the js-ipfs APIs, and more. 22 | 23 | ## More on libp2p 24 | 25 | We’re excited to bring more libp2p content to ProtoSchool in the near future! In the meantime, we highly recommend the [libp2p docs site](https://docs.libp2p.io/) as a great source of conceptual explainers, as well as code examples featuring the Go Lang, JavaScript, and Rust implementations of the networking stack. 26 | 27 | ## Help us improve ProtoSchool 28 | 29 | ProtoSchool is a team effort, and we depend on folks in the IPFS and dweb community to outline new content, add new features, fix bugs, catch typos, and test-drive new tutorials like this one. There are many ways to [contribute to the project](https://proto.school/contribute), no matter your background, and our new multiple-choice format makes it super easy to [create new tutorials](https://proto.school/build) without any coding experience. In fact, the awesome José Bateira, who created our latest tutorial, built it with the help of our user-friendly ProtoWizard CLI! 30 | 31 | Screenshot of ProtoWizard CLI 32 | 33 | One of the easiest ways to help is by sharing your feedback as you explore our tutorials. You’ll find a link at the bottom of every lesson to help you submit your suggestions. 34 | 35 | We can’t wait to hear what you think of the [new libp2p tutorial](https://proto.school/introduction-to-libp2p)! 36 | -------------------------------------------------------------------------------- /content/post/127-own-your-identity-with-ion.md: -------------------------------------------------------------------------------- 1 | --- 2 | date: 2021-03-24 3 | url: /2021-03-24/own-your-identity-with-ion 4 | title: Own Your Identity with ION 5 | author: Dietrich Ayala 6 | tags: identity 7 | header_image: 127-ion-header.png 8 | snippet: ION, the decentralized identity network from Microsoft and the Decentralized Identity Foundation, launches v1.0 with all transaction data distributed with IPFS. 9 | --- 10 | 11 |

12 | ION logo 13 |

14 | 15 | **We are many people!** Whether on Twitter, Zoom or paying the electricity bill, we assume identities to interact with others online. How much of that identity is you? How much of “you” is decided by those services? Why can’t the bag of bits that is “you” stick around while hopping from online service to online service? 16 | 17 | Well now it can! Decentralized identity services have matured to a point where usage is simple, they’re backed by public networks firmly rooted into the global business firmament, and now we’re seeing those businesses deploy them in earnest. 18 | 19 | Today, we’re excited to see a new decentralized identity service launch which stores its data on IPFS: Congratulations ION for launching v1.0! 20 | 21 | ## ION and IPFS 22 | 23 | ION is a public identity network providing distributed public key infrastructure through Decentralized Identifiers (DIDs) and the [Sidetree protocol](https://github.com/decentralized-identity/sidetree) on top of the Bitcoin blockchain. ION is developed by Microsoft and a group of collaborators at the Decentralized Identity Foundation. 24 | 25 | We’ve been working with them to support their use of IPFS since 2019. IPFS comes into the picture at the storage layer, where ION aggregates transactions into batches, adds those batches to IPFS, and then writes the IPFS content identifier (CID) of the batch to the blockchain. The ION pairs with a local go-ipfs node for publishing data for availability to the broader IPFS network. 26 | 27 | Additionally, ION has a network explorer at [identity.foundation/ion/explorer/](https://identity.foundation/ion/explorer/). 28 | 29 |

30 | ION network explorer 31 |

32 | 33 | ## Using and Contributing to ION 34 | 35 | Today Microsoft launched v1.0 of ION, and in [the launch post](https://techcommunity.microsoft.com/t5/identity-standards-blog/ion-we-have-liftoff/ba-p/1441555) they've shared examples of using the JavaScript client for application integration and steps for running a node. The team has created a high-level SDK for easy app integrations, with key and DID generation utilities and basic login APIs. Additionally they’ve published a low-level SDK for building customized identity solutions beyond what comes out of the box. 36 | 37 | As ION is a public network, running a node of your own will contribute to the overall health, resilience and performance of the system. Instructions for building and installing a node are detailed in the [ION Github repository]( https://github.com/decentralized-identity/ion). 38 | 39 | Try ION today for an identity solution which gives your users more control and let us know how it goes! Share your feedback in the ION repo or let [@IPFS](https://twitter.com/ipfs) know on Twitter. 40 | -------------------------------------------------------------------------------- /content/post/meet-the-community--Edgar-Lee-Netflix.md: -------------------------------------------------------------------------------- 1 | --- 2 | date: 2019-05-06 3 | url: /meet-the-community-edgar-lee/ 4 | tags: "Meet the Community" 5 | title: Meet the Community, Edgar Lee @ Netflix 6 | author: IPFS Events Team 7 | --- 8 | 9 | > With the first-ever IPFS Camp right around the corner, we’re interviewing some of the community members who are making this highly anticipated event a reality. 10 | > Haven’t applied yet? Don’t worry! Registration for the 3-day hacker retreat designed for the builders of the Distributed Web is still open! Visit [camp.ipfs.io](https://camp.ipfs.io/) to learn more about IPFS Camp, scholarships, and what’s included in your conference pass. 11 | 12 | > 💌 This interview first appeared in the [IPFS Events newsletter](http://eepurl.com/giMQzj), subscribe to receive exclusive content and invites to upcoming events. 13 | 14 | # Meet the Community: Edgar Lee, Software Developer @ Netflix 15 | 16 | 17 | 18 | ### Tell us a bit about yourself and your background. How did you get involved with IPFS? 19 | 20 | I work on developer tooling and infrastructure at Netflix and previously worked at Docker on the registry. The Docker Registry stores images as a merkle DAG much like IPFS, but was only granular at the layer level as opposed to file chunks. When I came across Akihiro Suda’s Filegrain proposal to use IPFS as a storage mechanism for container images, I discovered its ecosystem and started experimenting with the technology. 21 | 22 | ### Why should people be excited about IPFS? 23 | 24 | IPFS is exciting because it builds an ecosystem of tools over the concept of content addressable storage. By decoupling what the name of some content represents, and how to get said content, we get powerful properties typically desired in distributed systems. 25 | 26 | ### What projects are really exciting you in the IPFS Ecosystem at the moment and why? 27 | 28 | System package managers, library dependency management, container image registries all have similar requirements. Over time, some of them have individually reinvented content addressable storage and structured their data as a merkle DAG. IPFS’s 2019 roadmap to address package management is the most exciting to me right now, as it presents an opportunity to greatly improve the software landscape for both the decentralization movement, as well as private infrastructure. 29 | 30 | ### Open Source communities are full of unsung heroes. Is there someone in IPFS community who you admire for their work? 31 | 32 | Recently, magik6k and others worked hard on refactoring the IPFS Core API and created a clean HTTP client for IPFS. I use the results of this work extensively for the experiments I’m running so I’m grateful for their work. There’s also a lot of other exciting work like hsanjuan’s IPFS driver for Docker Registry, Stebalien’s work on IPFS itself, among many others. 33 | 34 | ### What are you most looking forward to at IPFS Camp? 35 | 36 | I’m most looking forward to meeting the team behind IPFS, and mind sharing with the community. It’ll also be my first time in Barcelona, so I’m excited to visit the beautiful city. 37 | 38 | --- 39 | 40 | Thank you for answering our questions, Edgar, looking forward to meet you at [IPFS Camp](https://camp.ipfs.io) 41 | 42 | > 💌 This interview first appeared in the [IPFS Events newsletter](http://eepurl.com/giMQzj), subscribe to receive exclusive content and invites to upcoming events. 43 | -------------------------------------------------------------------------------- /content/post/weekly-126.md: -------------------------------------------------------------------------------- 1 | --- 2 | date: 2021-03-10 3 | url: /weekly-126/ 4 | translationKey: ipfs-weekly-126 5 | tags: weekly 6 | header_image: weekly-newsletter.png 7 | title: Welcome to IPFS Weekly 126 8 | author: Jenn Turner 9 | snippet: Gitcoing Grants Round 9 kicks off, introducing Gasless Wallets, plus the rise of NFTs. 10 | --- 11 | 12 | Here’s what’s happening in the [InterPlanetary File System](https://ipfs.io/) galaxy! 13 | 14 | ## Gitcoin Grants Round 9 starts tomorrow 15 | Our friends at Gitcoin are kicking off round 9 of their grants program with a $~500k matching pool to distribute to the community. Expect a jam-packed schedule with a series of webinars, workshops, and community discussions around the grants round and hackathon with industry leaders, grantees, and hackathon sponsors during the 4-week long event. 16 | 17 | [Read more](https://gitcoin.co/hackathon/gr9/onboard) 18 | 19 | ## Introducing Gasless Wallet 20 | Continuing our series of ETHDenver project spotlights the Gasless Wallet, which allows users without eth to interact with Ethereum using other tokens. Created by Hakeem Orewole, Abdulhafiz Ahmed, and Mike Adediran, the gasless wallet is chain-agnostic and hosted on IPFS. Check it out! 21 | 22 | [Read more](https://devfolio.co/submissions/gasless-wallet-b236) 23 | 24 | ## Read about the rise of NFTs 25 | Looking for an introduction to NFTs and IPFS? Look no further than this recent post from Ether-1 about their fight for anti-censorship and decentralization. Read on to learn how Ether-1 and ethoFS can help evolve the NFT ecosystem. 26 | 27 | [Read more](https://dev-james.medium.com/the-rise-of-nfts-ether-1s-fight-for-anti-censorship-decentralization-31cc065f4908) 28 | 29 | ## Brand new on IPFS 30 | * Ever wondered what the [IPFS HTTP gateways](https://www.reddit.com/r/ipfs/comments/lvwn4o/ipfs_http_gateways_ranked_by_performance/) ranked by performance are? 31 | * The [NFT DID](https://github.com/w3c/did-spec-registries/pull/262) is a new DID method created using the Ceramic network, recently proposed to the W3C. 32 | * Introducing the [WAX Cloud Wallet](https://wallet.wax.io/), built with IPFS and the WAX blockchain to keep your NFTs secure. 33 | * Read [Part 2 of Pinata’s tutorial](https://medium.com/pinata/how-to-display-your-nft-collection-like-nba-top-shot-with-flow-and-ipfs-6ba75048bf8a) on how to display your NFT collectibles with Flow and IPFS. 34 | 35 | ## Around the ecosystem 🌏 36 | Read the [Scala Review 2021](https://medium.com/the-capital/scala-review-2021-keep-your-personal-information-secure-7bd2569e93a5): Keep your personal information secure 37 | 38 | NEW: [Polkadot now](https://medium.com/polkadot-network/polkadot-now-supported-on-ledger-live-4449f11b5130) supported on Ledger Live 39 | 40 | Announcing [IPFS for Creators](https://medium.com/mintgate/announcing-ipfs-for-creators-259a8f16e13), an upcoming series of technical workshops and written resources about IPFS tools and platforms that empower full ownership of content and storage. 41 | 42 | The [Float protocol](https://twitter.com/FloatProtocol/status/1367963890978537472) site is now hosted on IPFS, courtesy of Fleek. 43 | 44 | Read about the [decentralized internet](https://jewarner57.medium.com/the-decentralized-internet-you-can-us-right-now-f8488296cb8d) you can use right now. 45 | 46 | Check out this [Brave browser review](https://dev.to/zoedreams/brave-browser-review-secure-fast-private-web-browser-bhk) from the DEV Community. 47 | 48 | 49 | **Not the folks behind insurance premium financing solutions!** 50 | 51 | Get involved with IPFS by checking us out on [GitHub](https://github.com/ipfs), joining discussions on [our community forum](https://discuss.ipfs.io/), or hitting us up [in chat](https://riot.im/app/#/room/#ipfs:matrix.org). Have a suggestion? [Email us](mailto:newsletter@ipfs.io). 52 | 53 | Get the IPFS Weekly in your inbox, each Tuesday. 54 |

Sign up now

55 | -------------------------------------------------------------------------------- /drafts/templates/index.md: -------------------------------------------------------------------------------- 1 | --- 2 | # this is the final blog post's url (used in the directory) 3 | # should only contain: letters, numbers, dashes. 4 | # it should start and end with a slash 5 | url: /final-blog-post-name/ 6 | 7 | # the date here should be set to the final publication date, 8 | # on the day it is published. 9 | date: 2015-05-05 10 | 11 | # this is the Title 12 | title: Final Blog Post Title 13 | 14 | # this is the name of the main author(s) 15 | author: Author Name 16 | --- 17 | 18 | This is where the blog post's body goes. 19 | 20 | Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. 21 | -------------------------------------------------------------------------------- /drafts/templates/skeleton-example.md: -------------------------------------------------------------------------------- 1 | # Blog Post Skeleton 2 | 3 | ## Title 4 | 5 | go-ipfs 0.4.0 has been released 6 | 7 | ## Sentence description 8 | 9 | Post announceing the release of go-ipfs version 0.4.0. 10 | 11 | ## Abstract 12 | 13 | This is an announcement post, for the 0.4.0 release of go-ipfs. The goals of this post are to (a) get people excited about the new release, (b) highlight important new features, (c) give people important information about the breaking changes, and (d) give instructions on how to update. 14 | 15 | ## Skeleton 16 | 17 | - Announcement Summary short, exciting summary of the update. 18 | - The Files API: a section detailing the new files api, with code examples. 19 | - Why the wire protocol is changing: a discussion on why the protocol has to change. 20 | - Breaking Changes: what are they? 21 | - Public gateway/bootstrap: when will they change? 22 | - Changes to ipfs repo 23 | - Other improvements/fixes: list out a longer summary of important changes, and why. 24 | - How to upgrade: instructions on how to upgrade their ipfs installation. should be enough. 25 | - Changelog: full update changelog reproduced here. 26 | -------------------------------------------------------------------------------- /drafts/templates/skeleton.md: -------------------------------------------------------------------------------- 1 | # Blog Post Skeleton 2 | 3 | ## Title 4 | 5 | Enter the title here. 6 | 7 | ## Sentence description 8 | 9 | Enter a short sentence description of the post here. It will not necessarily be published; it is just for blog writing/reviewing purposes. 10 | 11 | 12 | ## Abstract 13 | 14 | Enter a short abstract of the post here, enough to give details to someone to flesh out and write out the full post. 15 | 16 | ## Skeleton 17 | 18 | Write out a skeleton of the main post here, as an outline. This should include the main points in the various sections of the post. 19 | -------------------------------------------------------------------------------- /i18n/en.json: -------------------------------------------------------------------------------- 1 | { 2 | "i18n__translations_available_header": { 3 | "other": "This page is also available in other languages:" 4 | }, 5 | "i18n__translation_disclaimer": { 6 | "other": "Disclaimer: It is difficult to perfectly translate technical concepts from one language to another, so note that we cannot guarantee the accuracy of this translation." 7 | }, 8 | "i18n__translation_disclaimer_link": { 9 | "other": "Original text can be found here." 10 | }, 11 | "i18n__translation_missing": { 12 | "other": "We are unable to provide translation of this post at this time. Showing original in English." 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /i18n/zh-cn.json: -------------------------------------------------------------------------------- 1 | { 2 | "i18n__translations_available_header": { 3 | "other": "此页面还有其他语言的版本:" 4 | }, 5 | "i18n__translation_disclaimer": { 6 | "other": "免责声明:将技术概念从一种语言完美地翻译到另一种语言是困难的,因此请注意,我们不能保证这个翻译的准确性。" 7 | }, 8 | "i18n__translation_disclaimer_link": { 9 | "other": "原文可以在这里找到。" 10 | }, 11 | "i18n__translation_missing": { 12 | "other": "我们现在无法提供这篇文章的翻译。英文原版。" 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /layouts/_default/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | {{ partial "head.html" . }} 6 | 7 | 8 | 9 | {{ partial "header.html" }} 10 | 11 |
12 | 13 |

14 | Available as RSS 15 |

16 | 17 |

Starlog

18 | 19 |

This is the IPFS Starlog, a series of communications about the IPFS Project. 20 | These posts are written by the IPFS team, and members of the broader community. The subject matter is 21 | broad: project news, protocol explanations, stories, usage examples, application spotlights, and more. 22 |

23 | 24 | {{ $pages := (where (where .Site.Pages "Section" "post") "Kind" "page") }} 25 | {{ range .Site.Home.Translations }} 26 | {{ if eq .Site.Language.Lang "en" }} 27 | {{ $pages = $pages | lang.Merge (where (where .Site.Pages "Section" "post") "Kind" "page") }} 28 | {{ end }} 29 | {{ end }} 30 | 31 |

Starlog entries: {{ len $pages }}

32 | 33 |
34 | {{ range .Paginator.Pages }} 35 |
36 | 37 |
38 | {{ if .Params.header_image }} 39 | 40 | {{ else }} 41 | 42 | {{ end }} 43 |
44 |
45 |
46 | {{ .Title }}
47 | {{ dateFormat "2006-01-02" .Date }} 48 |
49 |

50 | {{ if .Params.snippet }} 51 | {{ .Params.snippet }} 52 | {{ else }} 53 | {{ .Summary }} 54 | {{ end }} 55 |

56 |
57 | {{ end }} 58 |
59 |
60 | {{ partial "pagination" . }} 61 |
62 | 63 |
64 | 65 | {{ partial "footer.html" . }} 66 | 67 | 68 | -------------------------------------------------------------------------------- /layouts/index.json: -------------------------------------------------------------------------------- 1 | {{ $length := (len (where (where .Data.Pages "Section" "post") "Kind" "page")) -}} 2 | { 3 | "posts" : [ 4 | {{ range $index, $element := first 4 (sort (where (where .Data.Pages "Section" "post") "Kind" "page") "Params.date" "desc") -}} 5 | { 6 | "title" : {{ .Title | jsonify }}, 7 | "date" : "{{ .Date.Format "02 January 2006" }}", 8 | "url" : "{{ .Permalink }}", 9 | "author" : "{{ .Params.author }}" 10 | }{{ if and (ne (add $index 1) $length) (ne $index 3) }},{{ end }} 11 | {{ end -}} 12 | ] 13 | } 14 | -------------------------------------------------------------------------------- /layouts/partials/footer.html: -------------------------------------------------------------------------------- 1 | 63 | -------------------------------------------------------------------------------- /layouts/partials/head.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | {{ $.Param "title" }} 6 | 7 | 8 | {{ if .IsTranslated }} 9 | {{ if eq .Lang "en"}} 10 | 11 | 12 | {{end}} 13 | {{ range .Translations }} 14 | {{ if eq .Lang "en"}} 15 | 16 | 17 | {{ end}} 18 | 19 | {{ end}} 20 | {{ else }} 21 | 22 | 23 | {{ end }} 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | {{ template "_internal/google_analytics_async.html" . }} 56 | -------------------------------------------------------------------------------- /layouts/partials/header.html: -------------------------------------------------------------------------------- 1 | 24 | -------------------------------------------------------------------------------- /layouts/partials/pagination.html: -------------------------------------------------------------------------------- 1 | {{ $pag := $.Paginator }} 2 | {{ if gt $pag.TotalPages 1 }} 3 | {{ $.Scratch.Set "dot_rendered" false }} 4 | 34 | {{ end }} -------------------------------------------------------------------------------- /layouts/partials/summary.html: -------------------------------------------------------------------------------- 1 |
2 |

{{ .Title }}

3 |

by {{ .Params.author }} on {{ dateFormat "2006-01-02" .Date }}

4 |

{{ .Summary }}

5 |
6 | -------------------------------------------------------------------------------- /layouts/partials/translation-disclaimer.html: -------------------------------------------------------------------------------- 1 | {{ if .IsTranslated }} 2 | {{ if ne .Lang "en"}} 3 | {{ range .Translations }} 4 | {{ if eq .Lang "en"}} 5 |
6 | {{ i18n "i18n__translation_disclaimer" }} 7 | {{ i18n "i18n__translation_disclaimer_link" }} 8 |
9 | {{ end }} 10 | {{ end }} 11 | {{ end }} 12 | {{ end }} 13 | -------------------------------------------------------------------------------- /layouts/partials/translation-missing.html: -------------------------------------------------------------------------------- 1 | {{ if not .IsTranslated }} 2 |
3 | {{ i18n "i18n__translation_missing" }} 4 |
5 | {{ end }} 6 | -------------------------------------------------------------------------------- /layouts/partials/translations.html: -------------------------------------------------------------------------------- 1 | {{ if .IsTranslated }} 2 |
3 | {{ i18n "i18n__translations_available_header" }} 4 |
    5 | {{ range .Translations }} 6 |
  • 7 | {{ .Language.LanguageName }} ({{ .Lang }}): {{ .Title }} 8 |
  • 9 | {{ end}} 10 |
11 |
12 | {{ end }} 13 | -------------------------------------------------------------------------------- /layouts/post/list.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | Redirecting to https://blog.ipfs.io/ 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /layouts/post/single.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | {{ partial "head.html" . }} 5 | 6 | 7 | {{ partial "header.html" }} 8 | 9 |
10 | 11 | {{ partial "translations" . }} 12 | 13 |
14 |

{{ .Title }}

15 |

by {{ .Params.author }} on {{ dateFormat "2006-01-02" .Date }}

16 | 17 |

{{ partial "translation-disclaimer" . }}

18 | 19 | {{ .Content }} 20 | 21 | {{ if eq .Language.Lang "en" }} 22 |

Comments

23 |
24 | 46 | {{ end }} 47 |
48 |
49 | 50 | {{ partial "footer.html" . }} 51 | 52 | 53 | 54 | 55 | 56 | -------------------------------------------------------------------------------- /layouts/rss.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | {{ if eq .Title .Site.Title }}{{ .Site.Title }}{{ else }}{{ with .Title }}{{.}} on {{ end }}{{ .Site.Title }}{{ end }} 4 | {{ .Permalink }} 5 | 6 | {{ "/img/ipfs-logo-256-ice.png" | absURL }} 7 | {{ if eq .Title .Site.Title }}{{ .Site.Title }}{{ else }}{{ with .Title }}{{.}} on {{ end }}{{ .Site.Title }}{{ end }} 8 | {{ .Permalink }} 9 | 10 | Recent content {{ if ne .Title .Site.Title }}{{ with .Title }}in {{.}} {{ end }}{{ end }}on {{ .Site.Title }} 11 | Hugo -- gohugo.io{{ with .Site.LanguageCode }} 12 | {{.}}{{end}}{{ with .Site.Author.email }} 13 | {{.}}{{ with $.Site.Author.name }} ({{.}}){{end}}{{end}}{{ with .Site.Author.email }} 14 | {{.}}{{ with $.Site.Author.name }} ({{.}}){{end}}{{end}}{{ with .Site.Copyright }} 15 | {{.}}{{end}}{{ if not .Date.IsZero }} 16 | {{ .Date.Format "Mon, 02 Jan 2006 15:04:05 -0700" | safeHTML }}{{ end }} 17 | {{ with .OutputFormats.Get "RSS" }} 18 | {{ printf "" .Permalink .MediaType | safeHTML }} 19 | {{ end }} 20 | {{ range first 10 (where (where .Site.Pages "Section" "post") "Kind" "page") }} 21 | 22 | {{ .Title }} 23 | {{ .Permalink }} 24 | {{ .Date.Format "Mon, 02 Jan 2006 15:04:05 -0700" | safeHTML }} 25 | {{ with .Site.Author.email }}{{.}}{{ with $.Site.Author.name }} ({{.}}){{end}}{{end}} 26 | {{ .Permalink }} 27 | {{ .Summary | html }} 28 | {{ `` | safeHTML }} 29 | 30 | {{ end }} 31 | 32 | 33 | -------------------------------------------------------------------------------- /layouts/shortcodes/asciinema.html: -------------------------------------------------------------------------------- 1 |
2 | 5 | -------------------------------------------------------------------------------- /less/base.less: -------------------------------------------------------------------------------- 1 | .post img { 2 | max-width:100%; 3 | max-height:100%; 4 | } 5 | 6 | .post iframe { 7 | border: 0px; 8 | /*height: 400px;*/ 9 | overflow: hidden; 10 | } 11 | 12 | .post li { 13 | text-align: left; 14 | } 15 | 16 | .post .hljs { 17 | background: none; 18 | } 19 | -------------------------------------------------------------------------------- /less/components/footer.less: -------------------------------------------------------------------------------- 1 | /*-------------------------------------------------------------------- 2 | * 3 | * FOOTER 4 | * 5 | --------------------------------------------------------------------*/ 6 | 7 | .footer-primary { 8 | padding: 50px 0 20px; 9 | background: @brand-blue no-repeat center center; 10 | background-image: url(../img/footer-stars.png), 11 | url(../img/footer-bg.png); 12 | background-size: 1700px 400px, cover; 13 | color: white; 14 | margin-top: 60px; 15 | 16 | .grid-flex-container { 17 | margin-bottom: 0; 18 | } 19 | } 20 | 21 | ul.sitemap { 22 | li { 23 | font-weight: 200; 24 | font-style: normal; 25 | } 26 | 27 | li.sitemap-head { 28 | font-weight: 400; 29 | font-style: normal; 30 | text-transform: uppercase; 31 | letter-spacing: 1px; 32 | } 33 | } 34 | 35 | .share-links { 36 | li { 37 | display: inline-block; 38 | } 39 | 40 | a { 41 | width: 30px; 42 | height: 30px; 43 | display: inline-block; 44 | background: transparent no-repeat; 45 | background-size: contain; 46 | text-align: left; 47 | text-indent: -9999em; 48 | 49 | &.Twitter { 50 | background-image: url(../img/icon-social-twitter.svg); 51 | } 52 | &.Facebook { 53 | background-image: url(../img/icon-social-facebook.svg); 54 | } 55 | &.Google { 56 | background-image: url(../img/icon-social-google.svg); 57 | } 58 | &.YouTube { 59 | background-image: url(../img/icon-social-youtube.svg); 60 | } 61 | 62 | &:hover { 63 | opacity: .7; 64 | } 65 | } 66 | } 67 | 68 | @media screen and (max-width: @breakpoint-mid-mobile) { 69 | ul.sitemap { 70 | li:not(.sitemap-head) { 71 | margin: 5px 15px 0 0; 72 | display: inline-block; 73 | } 74 | } 75 | 76 | .share-links { 77 | margin: 50px 0 20px; 78 | text-align: center; 79 | 80 | a { 81 | margin: 0 10px; 82 | } 83 | } 84 | } 85 | 86 | @media screen and (min-width: @breakpoint-mid-mobile + 1) { 87 | .sitemap-menu { 88 | max-width: 430px; 89 | width: 60%; 90 | float: left; 91 | } 92 | 93 | .share-links { 94 | width: 40%; 95 | float: right; 96 | text-align: right; 97 | 98 | a { 99 | margin-left: 20px; 100 | } 101 | } 102 | 103 | .footer-copyright { 104 | clear: both; 105 | margin: 85px 0 0; 106 | } 107 | } 108 | -------------------------------------------------------------------------------- /less/components/navigation.less: -------------------------------------------------------------------------------- 1 | .top-nav { 2 | position: relative; 3 | z-index: 10; 4 | margin-bottom: 0; 5 | font-weight: 200; 6 | font-style: normal; 7 | font-size: 16px; 8 | } 9 | 10 | .top-nav, 11 | .top-nav li { 12 | background-color: transparent; 13 | text-shadow: 0 0 10px fade(@blue-space, 100%); 14 | } 15 | 16 | .top-nav-dark { 17 | label { 18 | position: relative; 19 | right: 0; 20 | top: 15px; 21 | text-indent: 100%; 22 | white-space: nowrap; 23 | overflow: hidden; 24 | width: 1.8em; 25 | float: right; 26 | } 27 | 28 | label:before { 29 | content: ""; 30 | position: absolute; 31 | right: 0; 32 | top: 0.25em; 33 | width: 1.8em; 34 | height: 0.15em; 35 | background: white; 36 | box-shadow: 0 0.50em 0 0 white, 0 1.0em 0 0 white; 37 | } 38 | 39 | a { 40 | color: white; 41 | } 42 | 43 | a:hover { 44 | opacity: .75; 45 | } 46 | } 47 | 48 | header .current-item { 49 | position: relative; 50 | font-weight: 200; 51 | font-style: normal; 52 | &:after { 53 | position: absolute; 54 | content: ''; 55 | height: 3px; 56 | background-color: @brand-teal; 57 | width: 100%; 58 | bottom: -7px; 59 | left: 0; 60 | border-radius: 3px; 61 | } 62 | } 63 | 64 | @media screen and (max-width: @breakpoint-tablet) { 65 | .top-nav { 66 | float: none; 67 | 68 | ul { 69 | display: none; 70 | clear: left; 71 | 72 | > li { 73 | padding: 0; 74 | } 75 | 76 | > li a { 77 | padding: @ui-padding-default @ui-padding-default @ui-padding-default 0; 78 | display: block; 79 | } 80 | } 81 | } 82 | 83 | .top-nav-dark { 84 | label { 85 | right: @ui-padding-default; 86 | } 87 | } 88 | 89 | .top-nav .menu-toggle:checked ~ ul { 90 | position: absolute; 91 | top: 55px; 92 | left: -9%; 93 | width: 117.8%; 94 | background-image: linear-gradient(to bottom, @brand-blue, darken(@brand-blue, 2) 100%); 95 | } 96 | 97 | .top-nav ul > li a { 98 | padding-left: 7%; 99 | } 100 | 101 | header .current-item { 102 | padding-left: 10% !important; 103 | &:after { 104 | display: none; 105 | } 106 | &:before { 107 | position: absolute; 108 | content: ''; 109 | width: 4px; 110 | height: 4px; 111 | border-radius: 4px; 112 | background-color: @brand-teal; 113 | top: 47%; 114 | left: 7%; 115 | } 116 | } 117 | } 118 | 119 | @media screen and (max-width: @breakpoint-smartphone) { 120 | .top-nav .menu-toggle:checked ~ ul { 121 | left: -6%; 122 | width: 111.5%; 123 | } 124 | 125 | .top-nav ul > li a { 126 | padding-left: 5%; 127 | } 128 | 129 | header .current-item { 130 | &:before { 131 | left: 5%; 132 | } 133 | } 134 | } 135 | -------------------------------------------------------------------------------- /less/components/youtube.less: -------------------------------------------------------------------------------- 1 | /* Responsive 100% Width YouTube iFrame Embed 2 | 3 | Use it like this: 4 | 5 |

6 | 7 |

8 | 9 | 10 | */ 11 | .yt-container { 12 | display: block; 13 | position: relative; 14 | width: 100%; 15 | height: 0; 16 | padding-bottom: 56.25%; 17 | } 18 | 19 | .yt-container > iframe { 20 | position: absolute; 21 | top: 0; 22 | left: 0; 23 | width: 100%; 24 | height: 100%; 25 | } 26 | -------------------------------------------------------------------------------- /less/globals/_helpers.less: -------------------------------------------------------------------------------- 1 | .mb { 2 | margin-bottom: @space; 3 | } 4 | .mb05 { 5 | margin-bottom: @space / 2; 6 | } 7 | 8 | .translations, 9 | .translation-missing, 10 | .translation-disclaimer { 11 | display: block; 12 | box-shadow: 0 1px 4px rgba(0,0,0,.04); 13 | border-radius: 3px; 14 | border: 1px solid #9ad4db; 15 | padding: .75em 1em .75em 1em; 16 | line-height: 1.3em; 17 | // Nice link underlines 18 | a { 19 | color: #000f66; 20 | text-decoration: none; 21 | background-image: linear-gradient( 22 | to bottom, 23 | rgba(0,15,85,.68) 50%, 24 | rgba(0,0,0,0) 50% 25 | ); 26 | background-repeat: repeat-x; 27 | background-size: 2px 1px; 28 | background-position: 0 1.03em; 29 | } 30 | a:hover { 31 | color: #000fee; 32 | } 33 | } 34 | .translations { 35 | margin-bottom: 60px; /* match padding from header */ 36 | line-height: 2em; 37 | ul, li { 38 | margin: 0; 39 | } 40 | ul { 41 | list-style-type: none; 42 | } 43 | 44 | } 45 | .translation-missing { 46 | border-color: #f9a13e; 47 | } 48 | .translation-disclaimer { 49 | border-color: #9ad4db; 50 | } 51 | -------------------------------------------------------------------------------- /less/globals/_variables.less: -------------------------------------------------------------------------------- 1 | // Taken from YetiCSS 2 | @space: 30px; 3 | @ui-padding-default: @space/3; 4 | @font-aktiv: helvetica neue, helvetica, arial, sans-serif; 5 | @breakpoint-smartphone: 480px; 6 | @breakpoint-mid-mobile: 600px; 7 | @breakpoint-tablet: 768px; 8 | @breakpoint-desktop: 900px; 9 | @breakpoint-desktop-wide: 1200px; 10 | @gray-lighter: #e6eaed; 11 | @gray-light: #b7c0c3; 12 | @gray-darker: #272b2d; 13 | 14 | // Bespoke variables 15 | @brand-blue: #083b54; 16 | @brand-teal: #6acad1; 17 | @accent-teal: #469ea2; 18 | @accent-red: #f05135; 19 | @accent-gold: #f59223; 20 | @blue-space: rgb(4,23,39); 21 | -------------------------------------------------------------------------------- /less/main.less: -------------------------------------------------------------------------------- 1 | @import 'yeti'; 2 | 3 | @import 'globals/_helpers'; 4 | @import 'globals/_variables'; 5 | 6 | @import 'base'; 7 | 8 | @import 'components/typography'; 9 | @import 'components/header'; 10 | @import 'components/navigation'; 11 | @import 'components/footer'; 12 | @import 'components/youtube'; 13 | 14 | @import 'pages/home'; 15 | @import 'pages/post'; 16 | -------------------------------------------------------------------------------- /less/pages/home.less: -------------------------------------------------------------------------------- 1 | .home { 2 | 3 | h5 { 4 | margin-bottom: 0px; 5 | padding-bottom: 12px; 6 | } 7 | 8 | .post-header a { 9 | font-size: 24px; 10 | } 11 | 12 | .illustration { 13 | padding-bottom: 8px; 14 | } 15 | 16 | .illustration img { 17 | min-width: 100%; 18 | height: auto; 19 | } 20 | 21 | .meta { 22 | float: right; 23 | font-size: 22px; 24 | 25 | .rss { 26 | img { 27 | height: 18px; 28 | } 29 | 30 | &:hover { 31 | border-bottom: 0; 32 | } 33 | } 34 | } 35 | } 36 | 37 | .post-list { 38 | 39 | li { 40 | margin-bottom: 10px; 41 | font-size: 20px; 42 | } 43 | 44 | .summary { 45 | margin: @space 0; 46 | h3 { 47 | margin-bottom: 0; 48 | } 49 | } 50 | 51 | .date { 52 | display: block; 53 | font-size: 18px; 54 | color: @gray-light; 55 | } 56 | } 57 | -------------------------------------------------------------------------------- /less/pages/post.less: -------------------------------------------------------------------------------- 1 | .post { 2 | > h1:first-of-type { 3 | margin: 0; 4 | } 5 | 6 | h1, h2, h3, h4, h5, h6 { 7 | margin-top: @space; 8 | } 9 | 10 | p, li { 11 | font-size: 22px; 12 | } 13 | 14 | .date { 15 | display: block; 16 | font-size: 13px; 17 | color: @gray-light; 18 | } 19 | 20 | // Backported from bootstrap 21 | code, 22 | kbd, 23 | pre, 24 | samp { 25 | font-family: Menlo, Monaco, Consolas, "Courier New", monospace; 26 | } 27 | code { 28 | padding: 5px 4px; 29 | font-size: 18px; 30 | color: #c7254e; 31 | background-color: #f9f2f4; 32 | border-radius: 5px; 33 | } 34 | pre { 35 | display: block; 36 | padding: 9.5px; 37 | margin: 0 0 10px; 38 | font-size: 14px; 39 | line-height: 1.42857143; 40 | color: #333; 41 | word-break: break-all; 42 | word-wrap: break-word; 43 | background-color: #f5f5f5; 44 | border: 1px solid #ccc; 45 | border-radius: 4px; 46 | } 47 | pre code { 48 | padding: 0; 49 | font-size: inherit; 50 | color: inherit; 51 | white-space: pre-wrap; 52 | background-color: transparent; 53 | border-radius: 0; 54 | } 55 | } 56 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "ipfs-blog", 3 | "version": "1.0.0", 4 | "description": "ipfs blog", 5 | "main": "index.js", 6 | "devDependencies": { 7 | "dnslink-deploy": "^1.0.7", 8 | "imagemin-cli": "^3.0.0", 9 | "imagemin-jpegtran": "^5.0.2", 10 | "imagemin-optipng": "^5.2.1", 11 | "imagemin-svgo": "^5.2.2", 12 | "less": "^2.7.2", 13 | "less-plugin-autoprefix": "^1.5.1", 14 | "less-plugin-clean-css": "^1.5.1", 15 | "hugo-bin": "^0.42.0", 16 | "nodemon": "^1.18.7" 17 | }, 18 | "scripts": { 19 | "start": "make dev" 20 | }, 21 | "license": "MIT", 22 | "dependencies": {} 23 | } 24 | -------------------------------------------------------------------------------- /static/0-hello-worlds/earthrise.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/0-hello-worlds/earthrise.png -------------------------------------------------------------------------------- /static/056-pubsub-in-the-browser/demo-screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/056-pubsub-in-the-browser/demo-screenshot.png -------------------------------------------------------------------------------- /static/056-pubsub-in-the-browser/ipfs-pubsub-in-browser-video.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/056-pubsub-in-the-browser/ipfs-pubsub-in-browser-video.jpg -------------------------------------------------------------------------------- /static/058-ipfs-desktop-0-9/browse-wild.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/058-ipfs-desktop-0-9/browse-wild.jpg -------------------------------------------------------------------------------- /static/058-ipfs-desktop-0-9/evolution.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/058-ipfs-desktop-0-9/evolution.jpg -------------------------------------------------------------------------------- /static/058-ipfs-desktop-0-9/ipfs-cmd.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/058-ipfs-desktop-0-9/ipfs-cmd.jpg -------------------------------------------------------------------------------- /static/058-ipfs-desktop-0-9/npm-ipfs.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/058-ipfs-desktop-0-9/npm-ipfs.jpg -------------------------------------------------------------------------------- /static/059-ipfs-camp-sci-fi-fair-videos/actyx.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/059-ipfs-camp-sci-fi-fair-videos/actyx.jpg -------------------------------------------------------------------------------- /static/059-ipfs-camp-sci-fi-fair-videos/catbot.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/059-ipfs-camp-sci-fi-fair-videos/catbot.jpg -------------------------------------------------------------------------------- /static/059-ipfs-camp-sci-fi-fair-videos/ipns.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/059-ipfs-camp-sci-fi-fair-videos/ipns.jpg -------------------------------------------------------------------------------- /static/059-ipfs-camp-sci-fi-fair-videos/marnee-minitel.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/059-ipfs-camp-sci-fi-fair-videos/marnee-minitel.jpg -------------------------------------------------------------------------------- /static/059-ipfs-camp-sci-fi-fair-videos/npm-in-box.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/059-ipfs-camp-sci-fi-fair-videos/npm-in-box.jpg -------------------------------------------------------------------------------- /static/059-ipfs-camp-sci-fi-fair-videos/vasa.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/059-ipfs-camp-sci-fi-fair-videos/vasa.jpg -------------------------------------------------------------------------------- /static/076-ipfs-docs-beta/img/docs-beta-screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/076-ipfs-docs-beta/img/docs-beta-screenshot.png -------------------------------------------------------------------------------- /static/076-ipfs-docs-beta/img/docs-beta-site-mindmap.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/076-ipfs-docs-beta/img/docs-beta-site-mindmap.png -------------------------------------------------------------------------------- /static/090-go-ipfs-0-5-0/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/090-go-ipfs-0-5-0/.DS_Store -------------------------------------------------------------------------------- /static/090-go-ipfs-0-5-0/0.5-Infographic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/090-go-ipfs-0-5-0/0.5-Infographic.png -------------------------------------------------------------------------------- /static/090-go-ipfs-0-5-0/IPFS 0.5.0 Launch Meetup.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/090-go-ipfs-0-5-0/IPFS 0.5.0 Launch Meetup.png -------------------------------------------------------------------------------- /static/090-go-ipfs-0-5-0/Launch-Meetup.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/090-go-ipfs-0-5-0/Launch-Meetup.png -------------------------------------------------------------------------------- /static/090-go-ipfs-0-5-0/container-image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/090-go-ipfs-0-5-0/container-image.png -------------------------------------------------------------------------------- /static/090-go-ipfs-0-5-0/ipfs-contributors.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/090-go-ipfs-0-5-0/ipfs-contributors.png -------------------------------------------------------------------------------- /static/091-dev-exp/labels-autoresponder.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/091-dev-exp/labels-autoresponder.png -------------------------------------------------------------------------------- /static/092-launching-testground/launch_testground_architecture.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/092-launching-testground/launch_testground_architecture.png -------------------------------------------------------------------------------- /static/092-launching-testground/launch_testground_flowchart.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/092-launching-testground/launch_testground_flowchart.png -------------------------------------------------------------------------------- /static/095-road-to-dht/Brendan-quote.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/095-road-to-dht/Brendan-quote.png -------------------------------------------------------------------------------- /static/095-road-to-dht/research.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/095-road-to-dht/research.jpg -------------------------------------------------------------------------------- /static/097-js-ipfs-0.46/bitswap-speedup.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/097-js-ipfs-0.46/bitswap-speedup.png -------------------------------------------------------------------------------- /static/098-libp2p-in-2020/find-perf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/098-libp2p-in-2020/find-perf.png -------------------------------------------------------------------------------- /static/100-mobile-design-guidelines/cheat-sheet-preview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/100-mobile-design-guidelines/cheat-sheet-preview.png -------------------------------------------------------------------------------- /static/100-mobile-design-guidelines/cheat-sheet.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/100-mobile-design-guidelines/cheat-sheet.pdf -------------------------------------------------------------------------------- /static/100-mobile-design-guidelines/cheat-sheet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/100-mobile-design-guidelines/cheat-sheet.png -------------------------------------------------------------------------------- /static/100-mobile-design-guidelines/principles.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/100-mobile-design-guidelines/principles.png -------------------------------------------------------------------------------- /static/100-mobile-design-guidelines/scenarios.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/100-mobile-design-guidelines/scenarios.png -------------------------------------------------------------------------------- /static/104-dht-deep-dive/find-time-dht.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/104-dht-deep-dive/find-time-dht.png -------------------------------------------------------------------------------- /static/104-dht-deep-dive/ipns-time-dht.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/104-dht-deep-dive/ipns-time-dht.png -------------------------------------------------------------------------------- /static/108-js-ipfs-0.50.0/pinning-performance.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/108-js-ipfs-0.50.0/pinning-performance.png -------------------------------------------------------------------------------- /static/11-ipfs-weekly-6/006_cbase_deaddrop.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/11-ipfs-weekly-6/006_cbase_deaddrop.jpeg -------------------------------------------------------------------------------- /static/11-ipfs-weekly-6/006_lgierth_fc00.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/11-ipfs-weekly-6/006_lgierth_fc00.jpg -------------------------------------------------------------------------------- /static/11-ipfs-weekly-6/006_station.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/11-ipfs-weekly-6/006_station.png -------------------------------------------------------------------------------- /static/111-js-ipfs-0-51-0/types.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/111-js-ipfs-0-51-0/types.png -------------------------------------------------------------------------------- /static/113-community-rfp/screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/113-community-rfp/screenshot.png -------------------------------------------------------------------------------- /static/114-ipfs-in-2021/browser-integration.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/114-ipfs-in-2021/browser-integration.png -------------------------------------------------------------------------------- /static/114-ipfs-in-2021/content-routing.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/114-ipfs-in-2021/content-routing.png -------------------------------------------------------------------------------- /static/114-ipfs-in-2021/proposals.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/114-ipfs-in-2021/proposals.png -------------------------------------------------------------------------------- /static/114-ipfs-in-2021/security-model.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/114-ipfs-in-2021/security-model.png -------------------------------------------------------------------------------- /static/115-protoschool-merkle-dags/dag-deduplication.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/115-protoschool-merkle-dags/dag-deduplication.png -------------------------------------------------------------------------------- /static/115-protoschool-merkle-dags/protowizard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/115-protoschool-merkle-dags/protowizard.png -------------------------------------------------------------------------------- /static/115-protoschool-merkle-dags/talk-rod.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/115-protoschool-merkle-dags/talk-rod.png -------------------------------------------------------------------------------- /static/115-protoschool-merkle-dags/talk-tara.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/115-protoschool-merkle-dags/talk-tara.png -------------------------------------------------------------------------------- /static/119-brave-how-we-built-this/ipfs-early.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/119-brave-how-we-built-this/ipfs-early.png -------------------------------------------------------------------------------- /static/119-brave-how-we-built-this/ipfs-install.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/119-brave-how-we-built-this/ipfs-install.png -------------------------------------------------------------------------------- /static/119-brave-how-we-built-this/ipfs-streaming.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/119-brave-how-we-built-this/ipfs-streaming.jpg -------------------------------------------------------------------------------- /static/12-ipfs-weekly-7/007_cbase_deaddrop.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/12-ipfs-weekly-7/007_cbase_deaddrop.jpg -------------------------------------------------------------------------------- /static/12-ipfs-weekly-7/007_talk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/12-ipfs-weekly-7/007_talk.png -------------------------------------------------------------------------------- /static/124-libp2p-comes-to-protoschool/libp2p-ipfs-animation.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/124-libp2p-comes-to-protoschool/libp2p-ipfs-animation.gif -------------------------------------------------------------------------------- /static/124-libp2p-comes-to-protoschool/libp2p-logo-animation.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/124-libp2p-comes-to-protoschool/libp2p-logo-animation.gif -------------------------------------------------------------------------------- /static/125-go-ipfs-0-8-0/125-go-ipfs-0-8-0-diagram.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/125-go-ipfs-0-8-0/125-go-ipfs-0-8-0-diagram.png -------------------------------------------------------------------------------- /static/125-go-ipfs-0-8-0/125-go-ipfs-0-8-0-wide.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/125-go-ipfs-0-8-0/125-go-ipfs-0-8-0-wide.png -------------------------------------------------------------------------------- /static/13-ipfs-weekly-8/008_webui.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/13-ipfs-weekly-8/008_webui.gif -------------------------------------------------------------------------------- /static/14-ipfs-0-4-0-released/fireworks.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/14-ipfs-0-4-0-released/fireworks.jpg -------------------------------------------------------------------------------- /static/15-ipfs-weekly-9/009_lisbon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/15-ipfs-weekly-9/009_lisbon.png -------------------------------------------------------------------------------- /static/15-ipfs-weekly-9/009_neo.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/15-ipfs-weekly-9/009_neo.jpg -------------------------------------------------------------------------------- /static/15-ipfs-weekly-9/009_orbit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/15-ipfs-weekly-9/009_orbit.png -------------------------------------------------------------------------------- /static/16-ipfs-weekly-10/010_ipfs-boston.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/16-ipfs-weekly-10/010_ipfs-boston.jpg -------------------------------------------------------------------------------- /static/16-ipfs-weekly-10/010_js-libp2p.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/16-ipfs-weekly-10/010_js-libp2p.png -------------------------------------------------------------------------------- /static/16-ipfs-weekly-10/010_orbit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/16-ipfs-weekly-10/010_orbit.png -------------------------------------------------------------------------------- /static/17-distributions/img/screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/17-distributions/img/screenshot.png -------------------------------------------------------------------------------- /static/3-ipscend/img/ipscend-screenshot.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/3-ipscend/img/ipscend-screenshot.gif -------------------------------------------------------------------------------- /static/3-ipscend/img/ipscend.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/3-ipscend/img/ipscend.png -------------------------------------------------------------------------------- /static/36-a-look-at-windows/img/build.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/36-a-look-at-windows/img/build.gif -------------------------------------------------------------------------------- /static/36-a-look-at-windows/img/empty.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/36-a-look-at-windows/img/empty.png -------------------------------------------------------------------------------- /static/36-a-look-at-windows/img/filenames.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/36-a-look-at-windows/img/filenames.png -------------------------------------------------------------------------------- /static/36-a-look-at-windows/img/garbage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/36-a-look-at-windows/img/garbage.png -------------------------------------------------------------------------------- /static/36-a-look-at-windows/img/log-after.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/36-a-look-at-windows/img/log-after.png -------------------------------------------------------------------------------- /static/36-a-look-at-windows/img/log-before.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/36-a-look-at-windows/img/log-before.png -------------------------------------------------------------------------------- /static/36-a-look-at-windows/img/overwrite 1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/36-a-look-at-windows/img/overwrite 1.png -------------------------------------------------------------------------------- /static/36-a-look-at-windows/img/overwrite 2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/36-a-look-at-windows/img/overwrite 2.png -------------------------------------------------------------------------------- /static/36-a-look-at-windows/img/pipe.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/36-a-look-at-windows/img/pipe.png -------------------------------------------------------------------------------- /static/53-go-ipfs-0-4-18/img/cpu-load.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/53-go-ipfs-0-4-18/img/cpu-load.png -------------------------------------------------------------------------------- /static/53-go-ipfs-0-4-18/img/gc-latency.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/53-go-ipfs-0-4-18/img/gc-latency.png -------------------------------------------------------------------------------- /static/67-crdt-research-meetup/img/video1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/67-crdt-research-meetup/img/video1.png -------------------------------------------------------------------------------- /static/67-crdt-research-meetup/img/video2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/67-crdt-research-meetup/img/video2.png -------------------------------------------------------------------------------- /static/67-crdt-research-meetup/img/video3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/67-crdt-research-meetup/img/video3.png -------------------------------------------------------------------------------- /static/67-crdt-research-meetup/img/video4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/67-crdt-research-meetup/img/video4.png -------------------------------------------------------------------------------- /static/78-ipfs-2019-roadmap/img/2019-epics.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/78-ipfs-2019-roadmap/img/2019-epics.png -------------------------------------------------------------------------------- /static/78-ipfs-2019-roadmap/img/goals.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/78-ipfs-2019-roadmap/img/goals.png -------------------------------------------------------------------------------- /static/78-ipfs-2019-roadmap/img/mission-statement.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/78-ipfs-2019-roadmap/img/mission-statement.png -------------------------------------------------------------------------------- /static/78-ipfs-2019-roadmap/img/q2-okrs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/78-ipfs-2019-roadmap/img/q2-okrs.png -------------------------------------------------------------------------------- /static/8-registry-mirror/img/enter-registry-mirror.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/8-registry-mirror/img/enter-registry-mirror.png -------------------------------------------------------------------------------- /static/8-registry-mirror/img/node-interactive-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/8-registry-mirror/img/node-interactive-logo.png -------------------------------------------------------------------------------- /static/fonts/314625_0_0.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/fonts/314625_0_0.eot -------------------------------------------------------------------------------- /static/fonts/314625_0_0.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/fonts/314625_0_0.ttf -------------------------------------------------------------------------------- /static/fonts/314625_0_0.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/fonts/314625_0_0.woff -------------------------------------------------------------------------------- /static/fonts/314625_0_0.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/fonts/314625_0_0.woff2 -------------------------------------------------------------------------------- /static/fonts/314625_2_0.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/fonts/314625_2_0.eot -------------------------------------------------------------------------------- /static/fonts/314625_2_0.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/fonts/314625_2_0.ttf -------------------------------------------------------------------------------- /static/fonts/314625_2_0.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/fonts/314625_2_0.woff -------------------------------------------------------------------------------- /static/fonts/314625_2_0.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/fonts/314625_2_0.woff2 -------------------------------------------------------------------------------- /static/fonts/314625_4_0.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/fonts/314625_4_0.eot -------------------------------------------------------------------------------- /static/fonts/314625_4_0.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/fonts/314625_4_0.ttf -------------------------------------------------------------------------------- /static/fonts/314625_4_0.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/fonts/314625_4_0.woff -------------------------------------------------------------------------------- /static/fonts/314625_4_0.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/fonts/314625_4_0.woff2 -------------------------------------------------------------------------------- /static/header_images/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/header_images/.DS_Store -------------------------------------------------------------------------------- /static/header_images/045-js-libp2p-0.25.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/header_images/045-js-libp2p-0.25.png -------------------------------------------------------------------------------- /static/header_images/055-js-libp2p-0.26.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/header_images/055-js-libp2p-0.26.png -------------------------------------------------------------------------------- /static/header_images/060-ipfs-camp-keynotes-interviews.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/header_images/060-ipfs-camp-keynotes-interviews.png -------------------------------------------------------------------------------- /static/header_images/071-ipfs-in-web-browsers.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/header_images/071-ipfs-in-web-browsers.png -------------------------------------------------------------------------------- /static/header_images/074-explore-the-files-api-on-protoschool.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/header_images/074-explore-the-files-api-on-protoschool.png -------------------------------------------------------------------------------- /static/header_images/076-ipfs-docs-beta.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/header_images/076-ipfs-docs-beta.png -------------------------------------------------------------------------------- /static/header_images/077-collaborative-clusters.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/header_images/077-collaborative-clusters.png -------------------------------------------------------------------------------- /static/header_images/081-js-libp2p-0.27.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/header_images/081-js-libp2p-0.27.png -------------------------------------------------------------------------------- /static/header_images/082-ethdenver-2020.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/header_images/082-ethdenver-2020.png -------------------------------------------------------------------------------- /static/header_images/082-our-focus-for-2020.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/header_images/082-our-focus-for-2020.png -------------------------------------------------------------------------------- /static/header_images/083-improved-bitswap-with-netflix.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/header_images/083-improved-bitswap-with-netflix.png -------------------------------------------------------------------------------- /static/header_images/084-explore-the-anatomy-of-a-cid-on-protoschool.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/header_images/084-explore-the-anatomy-of-a-cid-on-protoschool.png -------------------------------------------------------------------------------- /static/header_images/085-announcing-rust-ipfs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/header_images/085-announcing-rust-ipfs.png -------------------------------------------------------------------------------- /static/header_images/086-ipfs-in-opera-for-android.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/header_images/086-ipfs-in-opera-for-android.png -------------------------------------------------------------------------------- /static/header_images/088-ipfs-grants-platform.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/header_images/088-ipfs-grants-platform.png -------------------------------------------------------------------------------- /static/header_images/090-go-ipfs-0-5-0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/header_images/090-go-ipfs-0-5-0.png -------------------------------------------------------------------------------- /static/header_images/092-launching-testground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/header_images/092-launching-testground.png -------------------------------------------------------------------------------- /static/header_images/093-ipfs-pinning-summit-recap.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/header_images/093-ipfs-pinning-summit-recap.png -------------------------------------------------------------------------------- /static/header_images/094-gossipsub-v1.1-headerimage+grid.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/header_images/094-gossipsub-v1.1-headerimage+grid.jpeg -------------------------------------------------------------------------------- /static/header_images/094-gossipsub-v1.1-headerimage.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/header_images/094-gossipsub-v1.1-headerimage.jpeg -------------------------------------------------------------------------------- /static/header_images/095-road-to-dht.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/header_images/095-road-to-dht.png -------------------------------------------------------------------------------- /static/header_images/100-mobile-design-guidelines-header.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/header_images/100-mobile-design-guidelines-header.png -------------------------------------------------------------------------------- /static/header_images/102-case-study-audius.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/header_images/102-case-study-audius.png -------------------------------------------------------------------------------- /static/header_images/102-header-image-gossipsub-reports.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/header_images/102-header-image-gossipsub-reports.png -------------------------------------------------------------------------------- /static/header_images/104-dht-deep-dive.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/header_images/104-dht-deep-dive.png -------------------------------------------------------------------------------- /static/header_images/107-nix-ipfs.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/header_images/107-nix-ipfs.jpg -------------------------------------------------------------------------------- /static/header_images/112-dht-hardening.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/header_images/112-dht-hardening.jpg -------------------------------------------------------------------------------- /static/header_images/113-community-rfp.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/header_images/113-community-rfp.jpg -------------------------------------------------------------------------------- /static/header_images/114-ipfs-2021.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/header_images/114-ipfs-2021.jpg -------------------------------------------------------------------------------- /static/header_images/115-protoschool-merkle-dags.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/header_images/115-protoschool-merkle-dags.png -------------------------------------------------------------------------------- /static/header_images/119-how-we-put-ipfs-in-brave.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/header_images/119-how-we-put-ipfs-in-brave.jpg -------------------------------------------------------------------------------- /static/header_images/124-libp2p-comes-to-protoschool.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/header_images/124-libp2p-comes-to-protoschool.png -------------------------------------------------------------------------------- /static/header_images/125-go-ipfs-0-8-0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/header_images/125-go-ipfs-0-8-0.png -------------------------------------------------------------------------------- /static/header_images/127-ion-header.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/header_images/127-ion-header.png -------------------------------------------------------------------------------- /static/header_images/128-nft-header.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/header_images/128-nft-header.png -------------------------------------------------------------------------------- /static/header_images/blog-header-ion.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/header_images/blog-header-ion.png -------------------------------------------------------------------------------- /static/header_images/blog-header-libp2p.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/header_images/blog-header-libp2p.png -------------------------------------------------------------------------------- /static/header_images/blog-placeholder.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/header_images/blog-placeholder.png -------------------------------------------------------------------------------- /static/header_images/eth1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/header_images/eth1.png -------------------------------------------------------------------------------- /static/header_images/eth2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/header_images/eth2.png -------------------------------------------------------------------------------- /static/header_images/ipfs-at-ethdenver.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/header_images/ipfs-at-ethdenver.png -------------------------------------------------------------------------------- /static/header_images/ipfs-in-brave.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/header_images/ipfs-in-brave.png -------------------------------------------------------------------------------- /static/header_images/ipfs-in-browsers.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/header_images/ipfs-in-browsers.png -------------------------------------------------------------------------------- /static/header_images/ipfs-weekly-placeholder.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/header_images/ipfs-weekly-placeholder.png -------------------------------------------------------------------------------- /static/header_images/js-ipfs-placeholder.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/header_images/js-ipfs-placeholder.png -------------------------------------------------------------------------------- /static/header_images/opera-ipfs-header.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/header_images/opera-ipfs-header.png -------------------------------------------------------------------------------- /static/header_images/weekly-newsletter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/header_images/weekly-newsletter.png -------------------------------------------------------------------------------- /static/highlight/color-brewer.css: -------------------------------------------------------------------------------- 1 | /* 2 | 3 | Colorbrewer theme 4 | Original: https://github.com/mbostock/colorbrewer-theme (c) Mike Bostock 5 | Ported by Fabrício Tavares de Oliveira 6 | 7 | */ 8 | 9 | .hljs { 10 | display: block; 11 | overflow-x: auto; 12 | padding: 0.5em; 13 | background: #fff; 14 | -webkit-text-size-adjust: none; 15 | } 16 | 17 | .hljs, 18 | .hljs-subst, 19 | .hljs-tag .hljs-title, 20 | .nginx .hljs-title { 21 | color: #000; 22 | } 23 | 24 | .hljs-string, 25 | .hljs-title, 26 | .hljs-constant, 27 | .hljs-parent, 28 | .hljs-tag .hljs-value, 29 | .hljs-rule .hljs-value, 30 | .hljs-preprocessor, 31 | .hljs-pragma, 32 | .haml .hljs-symbol, 33 | .ruby .hljs-symbol, 34 | .ruby .hljs-symbol .hljs-string, 35 | .hljs-template_tag, 36 | .django .hljs-variable, 37 | .smalltalk .hljs-class, 38 | .hljs-addition, 39 | .hljs-flow, 40 | .hljs-stream, 41 | .bash .hljs-variable, 42 | .apache .hljs-tag, 43 | .apache .hljs-cbracket, 44 | .tex .hljs-command, 45 | .tex .hljs-special, 46 | .erlang_repl .hljs-function_or_atom, 47 | .asciidoc .hljs-header, 48 | .markdown .hljs-header, 49 | .coffeescript .hljs-attribute, 50 | .hljs-name { 51 | color: #756bb1; 52 | } 53 | 54 | .smartquote, 55 | .hljs-comment, 56 | .hljs-annotation, 57 | .diff .hljs-header, 58 | .hljs-chunk, 59 | .asciidoc .hljs-blockquote, 60 | .markdown .hljs-blockquote { 61 | color: #636363; 62 | } 63 | 64 | .hljs-number, 65 | .hljs-date, 66 | .hljs-regexp, 67 | .hljs-literal, 68 | .hljs-hexcolor, 69 | .smalltalk .hljs-symbol, 70 | .smalltalk .hljs-char, 71 | .go .hljs-constant, 72 | .hljs-change, 73 | .lasso .hljs-variable, 74 | .makefile .hljs-variable, 75 | .asciidoc .hljs-bullet, 76 | .markdown .hljs-bullet, 77 | .asciidoc .hljs-link_url, 78 | .markdown .hljs-link_url { 79 | color: #31a354; 80 | } 81 | 82 | .hljs-label, 83 | .ruby .hljs-string, 84 | .hljs-decorator, 85 | .hljs-filter .hljs-argument, 86 | .hljs-localvars, 87 | .hljs-array, 88 | .hljs-attr_selector, 89 | .hljs-important, 90 | .hljs-pseudo, 91 | .hljs-pi, 92 | .haml .hljs-bullet, 93 | .hljs-doctype, 94 | .hljs-deletion, 95 | .hljs-envvar, 96 | .hljs-shebang, 97 | .apache .hljs-sqbracket, 98 | .nginx .hljs-built_in, 99 | .hljs-list .hljs-built_in, 100 | .tex .hljs-formula, 101 | .erlang_repl .hljs-reserved, 102 | .hljs-prompt, 103 | .asciidoc .hljs-link_label, 104 | .markdown .hljs-link_label, 105 | .vhdl .hljs-attribute, 106 | .clojure .hljs-attribute, 107 | .asciidoc .hljs-attribute, 108 | .lasso .hljs-attribute, 109 | .coffeescript .hljs-property, 110 | .hljs-phony { 111 | color: #88f; 112 | } 113 | 114 | 115 | 116 | .hljs-keyword, 117 | .hljs-id, 118 | .hljs-title, 119 | .hljs-built_in, 120 | .css .hljs-tag, 121 | .hljs-doctag, 122 | .smalltalk .hljs-class, 123 | .hljs-winutils, 124 | .bash .hljs-variable, 125 | .apache .hljs-tag, 126 | .hljs-type, 127 | .hljs-typename, 128 | .tex .hljs-command, 129 | .asciidoc .hljs-strong, 130 | .markdown .hljs-strong, 131 | .hljs-request, 132 | .hljs-status { 133 | color: #3182bd; 134 | } 135 | 136 | .asciidoc .hljs-emphasis, 137 | .markdown .hljs-emphasis { 138 | font-style: italic; 139 | } 140 | 141 | .nginx .hljs-built_in { 142 | font-weight: normal; 143 | } 144 | 145 | .coffeescript .javascript, 146 | .javascript .xml, 147 | .lasso .markup, 148 | .tex .hljs-formula, 149 | .xml .javascript, 150 | .xml .vbscript, 151 | .xml .css, 152 | .xml .hljs-cdata { 153 | opacity: 0.5; 154 | } 155 | 156 | .css .hljs-attribute, 157 | .html .hljs-attribute { 158 | color: #e6550d; 159 | } 160 | 161 | .css .hljs-class, 162 | .html .hljs-tag, 163 | .html .hljs-title { 164 | color: #3182bd; 165 | } 166 | -------------------------------------------------------------------------------- /static/img/057-ipfs-camp-course-videos/core-a-thumbnail.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/img/057-ipfs-camp-course-videos/core-a-thumbnail.png -------------------------------------------------------------------------------- /static/img/057-ipfs-camp-course-videos/core-d-thumbnail.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/img/057-ipfs-camp-course-videos/core-d-thumbnail.png -------------------------------------------------------------------------------- /static/img/060-ipfs-camp-recap/camp-gif.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/img/060-ipfs-camp-recap/camp-gif.gif -------------------------------------------------------------------------------- /static/img/060-ipfs-camp-recap/ipfs-camp-youtube-preview.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/img/060-ipfs-camp-recap/ipfs-camp-youtube-preview.jpg -------------------------------------------------------------------------------- /static/img/071-ipfs-in-web-browsers/enable-embedded-node-in-brave.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/img/071-ipfs-in-web-browsers/enable-embedded-node-in-brave.png -------------------------------------------------------------------------------- /static/img/071-ipfs-in-web-browsers/enabling-ipfs-companion-in-brave.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/img/071-ipfs-in-web-browsers/enabling-ipfs-companion-in-brave.gif -------------------------------------------------------------------------------- /static/img/071-ipfs-in-web-browsers/opera-announcement.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/img/071-ipfs-in-web-browsers/opera-announcement.png -------------------------------------------------------------------------------- /static/img/071-ipfs-in-web-browsers/stages-of-browser-integration.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/img/071-ipfs-in-web-browsers/stages-of-browser-integration.png -------------------------------------------------------------------------------- /static/img/074-explore-the-files-api-on-protoschool/challenge_screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/img/074-explore-the-files-api-on-protoschool/challenge_screenshot.png -------------------------------------------------------------------------------- /static/img/074-explore-the-files-api-on-protoschool/toc_screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/img/074-explore-the-files-api-on-protoschool/toc_screenshot.png -------------------------------------------------------------------------------- /static/img/082-ethdenver-2020/ipfs-ethdenver.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/img/082-ethdenver-2020/ipfs-ethdenver.png -------------------------------------------------------------------------------- /static/img/084-protoschool-tutorial-anatomy-of-a-cid/cid-inspector.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/img/084-protoschool-tutorial-anatomy-of-a-cid/cid-inspector.png -------------------------------------------------------------------------------- /static/img/084-protoschool-tutorial-anatomy-of-a-cid/quiz.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/img/084-protoschool-tutorial-anatomy-of-a-cid/quiz.png -------------------------------------------------------------------------------- /static/img/084-protoschool-tutorial-anatomy-of-a-cid/sample-lesson.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/img/084-protoschool-tutorial-anatomy-of-a-cid/sample-lesson.png -------------------------------------------------------------------------------- /static/img/084-protoschool-tutorial-anatomy-of-a-cid/table-of-contents.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/img/084-protoschool-tutorial-anatomy-of-a-cid/table-of-contents.png -------------------------------------------------------------------------------- /static/img/084-protoschool-tutorial-anatomy-of-a-cid/toggle-coding-challenges.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/img/084-protoschool-tutorial-anatomy-of-a-cid/toggle-coding-challenges.png -------------------------------------------------------------------------------- /static/img/084-protoschool-tutorial-anatomy-of-a-cid/type-icons.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/img/084-protoschool-tutorial-anatomy-of-a-cid/type-icons.png -------------------------------------------------------------------------------- /static/img/086-ipfs-in-opera-for-android/opera-android-banner.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/img/086-ipfs-in-opera-for-android/opera-android-banner.png -------------------------------------------------------------------------------- /static/img/086-ipfs-in-opera-for-android/opera-android-play-store.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/img/086-ipfs-in-opera-for-android/opera-android-play-store.png -------------------------------------------------------------------------------- /static/img/086-ipfs-in-opera-for-android/opera-android-protocol-demo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/img/086-ipfs-in-opera-for-android/opera-android-protocol-demo.png -------------------------------------------------------------------------------- /static/img/086-ipfs-in-opera-for-android/opera-android-settings.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/img/086-ipfs-in-opera-for-android/opera-android-settings.gif -------------------------------------------------------------------------------- /static/img/086-ipfs-in-opera-for-android/opera-android-test-page.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/img/086-ipfs-in-opera-for-android/opera-android-test-page.png -------------------------------------------------------------------------------- /static/img/087-ipfs-mobile-design-research/device-sales-2005-2016.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/img/087-ipfs-mobile-design-research/device-sales-2005-2016.jpg -------------------------------------------------------------------------------- /static/img/098_devcon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/img/098_devcon.png -------------------------------------------------------------------------------- /static/img/099-identity-ipfs-ion/ion-architecture.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/img/099-identity-ipfs-ion/ion-architecture.png -------------------------------------------------------------------------------- /static/img/099-identity-ipfs-ion/ion-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/img/099-identity-ipfs-ion/ion-logo.png -------------------------------------------------------------------------------- /static/img/099-identity-ipfs-ion/ipfs-ion-header.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/img/099-identity-ipfs-ion/ipfs-ion-header.png -------------------------------------------------------------------------------- /static/img/101-case-study-audius/case-study-audius.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/img/101-case-study-audius/case-study-audius.jpg -------------------------------------------------------------------------------- /static/img/120-ipfs-at-ethdenver/ethdenver2019.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/img/120-ipfs-at-ethdenver/ethdenver2019.jpeg -------------------------------------------------------------------------------- /static/img/120-ipfs-at-ethdenver/flyingspork.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/img/120-ipfs-at-ethdenver/flyingspork.png -------------------------------------------------------------------------------- /static/img/120-ipfs-at-ethdenver/helpdesk2020.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/img/120-ipfs-at-ethdenver/helpdesk2020.jpg -------------------------------------------------------------------------------- /static/img/120-ipfs-at-ethdenver/sportscastle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/img/120-ipfs-at-ethdenver/sportscastle.png -------------------------------------------------------------------------------- /static/img/banner.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/img/banner.png -------------------------------------------------------------------------------- /static/img/brave-enable-daemon.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/img/brave-enable-daemon.gif -------------------------------------------------------------------------------- /static/img/brave-enable-ipfs.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/img/brave-enable-ipfs.gif -------------------------------------------------------------------------------- /static/img/ethdenver-winners.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/img/ethdenver-winners.png -------------------------------------------------------------------------------- /static/img/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/img/favicon.ico -------------------------------------------------------------------------------- /static/img/footer-bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/img/footer-bg.png -------------------------------------------------------------------------------- /static/img/footer-stars.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/img/footer-stars.png -------------------------------------------------------------------------------- /static/img/gossipsubv1.1-jupyter.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/img/gossipsubv1.1-jupyter.gif -------------------------------------------------------------------------------- /static/img/help-desk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/img/help-desk.png -------------------------------------------------------------------------------- /static/img/icon-rss.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /static/img/icon-social-facebook.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /static/img/icon-social-google.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /static/img/icon-social-twitter.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /static/img/icon-social-youtube.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /static/img/ion-explorer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/img/ion-explorer.png -------------------------------------------------------------------------------- /static/img/ipfs-in-brave.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/img/ipfs-in-brave.png -------------------------------------------------------------------------------- /static/img/ipfs-logo-128-ice.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/img/ipfs-logo-128-ice.png -------------------------------------------------------------------------------- /static/img/ipfs-logo-256-ice.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/img/ipfs-logo-256-ice.png -------------------------------------------------------------------------------- /static/img/ipfs-logo.svg: -------------------------------------------------------------------------------- 1 | IPFS logo (new) -------------------------------------------------------------------------------- /static/img/meet-the-community/alan-shaw.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/img/meet-the-community/alan-shaw.jpg -------------------------------------------------------------------------------- /static/img/meet-the-community/carson-farmer.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/img/meet-the-community/carson-farmer.jpg -------------------------------------------------------------------------------- /static/img/meet-the-community/edgar-lee.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/img/meet-the-community/edgar-lee.jpg -------------------------------------------------------------------------------- /static/img/opera-ios-app-store-short.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/img/opera-ios-app-store-short.png -------------------------------------------------------------------------------- /static/img/opera-ios-wikipedia-short.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/img/opera-ios-wikipedia-short.png -------------------------------------------------------------------------------- /static/img/opera-ipfs-header.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/img/opera-ipfs-header.png -------------------------------------------------------------------------------- /static/img/virtual-castle.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ipfs-inactive/blog/616abde2224569f2b0a010117da7ccada44fb109/static/img/virtual-castle.jpeg -------------------------------------------------------------------------------- /static/js/main.js: -------------------------------------------------------------------------------- 1 | // Fix ipfs.io/blog/* links loaded via DNSLink: https://github.com/ipfs/blog/issues/360 2 | if (window.location.hostname === 'ipfs.io' && window.location.pathname.indexOf('/blog') === 0) { 3 | window.location.replace(window.location.href.replace('//ipfs.io/blog', '//blog.ipfs.io')) 4 | } 5 | -------------------------------------------------------------------------------- /versions/current: -------------------------------------------------------------------------------- 1 | Qmb8c461bLuD6pqoZBNKL2KKeGHVymecU7RT9USHg1w7w2 2 | -------------------------------------------------------------------------------- /versions/history: -------------------------------------------------------------------------------- 1 | QmXkrrx3iFXq5qFGP2qRb7m4UoJ1YaeRdmfyEqMyMEuN8i 2 | QmRCheYarSTnqDRxkvpR7DMXWkmzJV4ZFyrLLpqudcSb7J 3 | QmTyp7vwgsGoheq58mpTjmvkHjUd85kePrryQZj4urscmR 4 | QmWQ5BwExewgJ6SkJoTjhfD1Z17EhyjvsFERmUoifd79LZ 5 | QmQXWvuEwHV5wSkPdEnBbQCnDd8xgJeaS7g9SiVCg273VU 6 | QmXdUr9URYpYESp8gRVYbhkh8Tt84JdnThThRchGEnbsNm 7 | QmSZ4PjkgbhRZ4qe2ZHDdAcHhdo61V8BkukxDkcjmjUJ8d 8 | QmWs8oR9dSiFL9bHmfFUV6hXuJmZL1qbDnz2u8xa6U87Pw 9 | QmUFLtWVthL6MopbED3uWUYR8PTWrDbsYBULZ6Qr3czhvV 10 | QmaG9G8y8E3rQQ3JM8G3AN8k8KNxCVn3tehiyne3US6Hrp 11 | QmR42tVsxvNGrdpYywnB2v4yQMRN1ZGKLgTRd9CTFCzcQ9 12 | QmR3fGi7CtL9YbrVSjzmktPwfGPbAa8ULc6YF3p8kwkKTq 13 | QmRpfPjJyUpDZhnEa18anTCtBsWtei5FBxPB9N3NiceBUk 14 | QmYxRPivTzLCeJrPonpVvQGG12pAGB1N683WbhxBkZ2zxX 15 | QmYxRPivTzLCeJrPonpVvQGG12pAGB1N683WbhxBkZ2zxX 16 | QmPFJAhLufVzjY2prUgRq8JMjW7CMWY5MeeCFz5WpPvQMo 17 | QmdmDK3aLBYYaYcgWgZCx6emAWtaGGBQwxSMur2xKjnUys 18 | QmYsLyuHmPVk9DkYPGSeF3CyAVQ5HA8F4UoVhJn4xhscAh 19 | QmYsLyuHmPVk9DkYPGSeF3CyAVQ5HA8F4UoVhJn4xhscAh 20 | QmaZq7pKRrJXi9BnxUyQKUgDCDewNGzTe6FZXKvh7uc9uq 21 | QmXbf5MzrW4kDA5GvHVs4mvsEzVMWG1LibHrBiKXShXqsh 22 | QmPGFPi5WWC3fARrBdTP9iyoXf8wEkbY7ssCTU25iKQTvf 23 | QmXQtJtHWUauZmKU7Q6XdeyJ95QQm98rFg5WZzQhYmQAPg 24 | QmPGFPi5WWC3fARrBdTP9iyoXf8wEkbY7ssCTU25iKQTvf 25 | QmPGFPi5WWC3fARrBdTP9iyoXf8wEkbY7ssCTU25iKQTvf 26 | QmXQtJtHWUauZmKU7Q6XdeyJ95QQm98rFg5WZzQhYmQAPg 27 | QmcbLR3t1DHqHBz5qPkC1bhge9bDErcoe9WbZba23t9ABZ 28 | Qmb8c461bLuD6pqoZBNKL2KKeGHVymecU7RT9USHg1w7w2 29 | --------------------------------------------------------------------------------