diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml new file mode 100644 index 0000000..ac5020b --- /dev/null +++ b/.github/workflows/deploy.yml @@ -0,0 +1,41 @@ +name: Build and Deploy +on: + push: + branches: + - main # Set a branch to deploy + pull_request: + +permissions: + contents: write +jobs: + build-and-deploy: + runs-on: ubuntu-latest + concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + permissions: + contents: write + steps: + - uses: actions/checkout@v3 + with: + fetch-depth: 0 + + - uses: denoland/setup-deno@v1 + with: + deno-version: v1.x + + - uses: szenius/set-timezone@v1.0 + with: + timezoneLinux: "Europe/Prague" + + - name: Build bundle + run: make + + #- name: Add custom domain + # run: "touch dist/CNAME && echo \"data.web3privacy.info\" >> dist/CNAME" + + - name: Deploy + uses: peaceiris/actions-gh-pages@v3 + if: ${{ github.ref == 'refs/heads/main' }} + with: + github_token: ${{ secrets.GITHUB_TOKEN }} + publish_dir: ./dist \ No newline at end of file diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..53c37a1 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +dist \ No newline at end of file diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..c4a5cb3 --- /dev/null +++ b/Makefile @@ -0,0 +1,2 @@ +all: + deno run --allow-all utils/build.js \ No newline at end of file diff --git a/src/2024/week05.md b/src/2024/week05.md new file mode 100644 index 0000000..9b1b9af --- /dev/null +++ b/src/2024/week05.md @@ -0,0 +1,28 @@ +### Research + +* [Privacy Spreadsheet](https://privacyspreadsheet.com/messaging-apps) comparing different messengers on their privacy properties ([src](https://twitter.com/russian_bot_69/status/1754051913182478683)) +* [Passkeys wallet on the EVM](https://medium.com/@salvayre.yoan/passkeys-wallet-on-the-evm-69d4930ea4af) by @slovaye ([src](https://twitter.com/slovaye/status/1754138804909158708)) + +### Ecosystem + +* [Nym x Zcash grant](https://forum.zcashcommunity.com/t/revised-nym-for-zcash-network-level-privacy/46688) +* [Horswap](https://1.horswap.eth.limo/): Uniswap frontend without censorship or interface fees, by @MicahZoltu ([src](https://twitter.com/MicahZoltu/status/1753416705983074668)) +* IllumineX (confidental EVM DEX) [launched Mainnet](https://oasisprotocol.org/blog/illuminex-mainnet-oasis-sapphire) on Oasis Sapphire network ([src](https://twitter.com/oasisprotocol/status/1754562811462922606)) + +### Government + +* [NSA Admits Secretly Buying Your Internet Browsing Data without Warrants](https://thehackernews.com/2024/01/nsa-admits-secretly-buying-your.html) + +### Breaches + +* [Mother of all breaches](https://cybernews.com/security/billions-passwords-credentials-leaked-mother-of-all-breaches/) (MOAB) reveals 26 billion records + +### Events + +* MoneroKon 2024 started [selling tickets](https://shop.monerokon.org/monerokon/2024/) ([src](https://twitter.com/MoneroKon/status/1752928601299730871)) +* ETHBerlin4 [Hacker application](https://visas.ethberlin.org/ethberlin/4/) & [volunteer application](https://office.ethberlin.org/form/#/2/form/view/Jg-FHZYy2RKg7XTJ9pULHii0du1kVQ2QwawZdjkmgCY/) open ([src](https://twitter.com/ETHBerlin/status/1753791403690246348)) + +### Videos + +* [The Great Privacy Awakening](https://www.youtube.com/watch?v=NvyqPec7G-c) by @JackRhysider ([src](https://twitter.com/JackRhysider/status/1752013494810198079)) +* [Breaking Bitlocker](https://www.youtube.com/watch?v=wTl4vEednkQ) - Bypassing the Windows Disk Encryption ([src](https://twitter.com/wilderko/status/1754198973303165187)) \ No newline at end of file diff --git a/src/2024/week06.md b/src/2024/week06.md new file mode 100644 index 0000000..c35360f --- /dev/null +++ b/src/2024/week06.md @@ -0,0 +1,41 @@ +--- +curator: Tree +--- + +### Research + +* [Week in the Privacy News](https://news.web3privacy.info/): new weekly summary of the most important news from ecosystem +* Pavol Lupták: [Brave is not a true privacy-oriented browser](https://twitter.com/wilderko/status/1755724309371158612) +* Zac Williamson: thread about visions of a [dystopian future when we fail](https://twitter.com/Zac_Aztec/status/1755309412435259657) +* Wired: [experience with Passkeys](https://web.archive.org/web/20240211021321/https://www.wired.com/story/stopped-using-passwords-passkeys/#intcid=_wired-tag-right-rail_be4cde38-940c-4c15-8796-37cb1513d6ae_popular4-1) + +### Ecosystem + +* Logos, Nomos, Waku, Codex, Status and others now federated under the [Institute of Free Technology](https://free.technology/) +* Binance [Will Delist XMR](https://www.binance.com/en/support/announcement/binance-will-delist-ant-multi-vai-xmr-on-2024-02-20-f73b083ba6834771b07dbe5319917ae5) on 2024-02-20 ([src](https://twitter.com/wilderko/status/1754857029892538430)) +* [Binance delisting sparks privacy concerns](https://archive.is/20240209130053/https://www.ft.com/content/971ac694-f250-412c-9fe0-f956378a751a): Financial Times article on Monero delisting +* [Brave Nightly support Zcash](https://twitter.com/brave/status/1756138102395973834) in their integrated wallet (only unshielded transactions for now) +* WalletConnect launches Web3Modal Analytics, showing that they [doesn't mind tracking own users](https://twitter.com/hazae41/status/1755379493609374113) +* Session team announced upcoming [upgrade from Oxen Network to Session Network](https://getsession.org/upgrading-to-session-network) +* Skiff was [acquired by Notion](https://twitter.com/skiffprivacy/status/1756093174806974831) and will wind down its services in 6 months ([src](https://twitter.com/gweicz/status/1756110645064306703)) + +### Releases + +* Brume Wallet [v0.5](https://github.com/brumewallet/wallet/releases/tag/v0.5.0): UI enhancements, added features, faster startup, content creation introduction + +### Podcasts + +* [War on privacy in Web3?](https://www.podpage.com/epic-web3-podcast/war-on-privacy-in-web3-with-zach-williamson-co-founder-ceo-at-aztec-protocol/): with Zach Williamson, CEO at Aztec Protocol +* [Function of privacy in DeFi](https://twitter.com/therollupco/status/1755052382633787690): @robbie_rollup and Lou Waroo from Houdini Swap, crosschain DEX and liquidity agreggator +* [Drama is the Prime Indicator of Decentralisation](https://www.youtube.com/watch?v=PLJ1DYdae7o&t=1050s): with Dr. Nick Almond from Factory DAO ([src](https://twitter.com/wuipod/status/1756743521296347418)) + +### Community + +* [DAO Privacy](https://twitter.com/i/spaces/1ZkKzjvBLXwKv): X space with Gnosis Guild, Safe, Shutter Network, ShapeShift & Fractal ([src](https://twitter.com/fractalappxyz/status/1753886789402575131)) + +### Other + +* Defunkt: The co-founder and former CEO of GitHub has been [banned from GitHub](https://twitter.com/defunkt/status/1754610843361362360) (without explanation) ([src](https://twitter.com/vpavlin/status/1754792610898587700)) +* Citrea: [Bitcoin's first ZK Rollup](https://www.blog.citrea.xyz/introducing-citrea/) ([src](https://twitter.com/citrea_xyz/status/1754883284893356368)) +* [Liberation Travel Hacks 02/2024](https://liberation.travel/?mailpoet_router&endpoint=view_in_browser&action=view&data=WzEwLCI0ZjU4NjA1ZWIxMzQiLDAsMCw1LDFd) from Liberation Travel ([subscribe](https://liberation.travel/new-liberation-travel-hacks-month-letter/)) +* Canada moves to [ban Flipper Zero](https://gizmodo.com/canada-moves-to-ban-the-flipper-zero-over-car-hacking-f-1851242790) over car hacking fears ([src](https://twitter.com/wilderko/status/1756719463406211357)) \ No newline at end of file diff --git a/utils/build.js b/utils/build.js new file mode 100644 index 0000000..61a494f --- /dev/null +++ b/utils/build.js @@ -0,0 +1,72 @@ +import { join } from "https://deno.land/std@0.208.0/path/mod.ts"; +import { emptyDir } from "https://deno.land/std@0.196.0/fs/empty_dir.ts"; +import { setWeek, nextMonday, format, addDays } from 'npm:date-fns'; +import { marked } from 'npm:marked'; +import matter from 'npm:front-matter'; + +const SRC_DIR = "./src"; +const DEST_DIR = "./dist"; + +async function build() { + const issues = []; + for await (const dirEntry of Deno.readDir(SRC_DIR)) { + if (!dirEntry.isDirectory || !dirEntry.name.match(/^\d{4}$/)) { + continue; + } + //const [fn, ext] = dirEntry.name.split("."); + const year = dirEntry.name; + const yearDir = join(SRC_DIR, year); + console.log(`Processing year: ${year}`); + for await (const dirEntry of Deno.readDir(yearDir)) { + const [fn, ext] = dirEntry.name.split("."); + const weekMatch = fn.match(/^week(\d{2})$/) + if (!weekMatch || ext !== "md") { + continue; + } + const week = weekMatch[1] + const mdPath = join(SRC_DIR, year, dirEntry.name); + const source = await Deno.readTextFile(mdPath); + + const issue = { + week: `${year}-${week}`, + period: calcPeriod(year, week), + } + + await renderData(issue, source) + issues.push(issue) + } + } + + await emptyDir(DEST_DIR); + const outputFn = join(DEST_DIR, "index.json"); + await writeJSONFile(outputFn, issues); +} + +async function renderData(issue, source) { + const fm = matter(source); + + const parsed = marked.parse(fm.body); + return Object.assign(issue, fm.attributes, { newsMd: fm.body, newsHtml: parsed }); + + //const fm = matter(issue.source) + //console.log(fm) + //console.log(parsed) + //return +} + +function calcPeriod(year, week) { + const weekStart = setWeek(nextMonday(new Date(Number(year), 0, 4)), Number(week), { + weekStartsOn: 1, + firstWeekContainsDate: 4, + }); + const weekEnd = addDays(weekStart, 6); + + return [ weekStart, weekEnd ]; +} + +async function writeJSONFile(fn, data) { + console.log(`File written: ${fn}`); + return Deno.writeTextFile(fn, JSON.stringify(data, null, 2)); +} + +build(); \ No newline at end of file