blog-site

https://lin.moe

git clone git://git.lin.moe/blog-site.git

 1#+Title: Lindsay
 2#+SUBTITLE:
 3#+OPTIONS: toc:nil ^:nil
 4#+HTML_LINK_UP:
 5#+HTML_LINK_HOME:
 6
 7* Writings
 8+ [[./blog][Blog]]
 9+ [[https://nya.one/@lindsay][Fediverse]]
10
11* Contact
12|------------+----------------------|
13| Email      | [[mailto:Linsen Zhou <i@lin.moe>][i@lin.moe]]            |
14| IRC        | lindsay@irc.oftc.net |
15| PGP Pubkey | [[./pubkey.txt][7EB223B9B0D814B9]]     |
16
17* Friends
18+ [[https://kaix.in/][KAIX.IN]]
19+ [[https://qaq.land][qaqland's site]]
20
21* Music I like
22+ [[https://www.dizzylab.net/d/TTDL-05/][Tetogazer "Remastered" - 铁头动力 T^T Dynamics]]
23+ [[https://nekokostore.bandcamp.com/album/--2][絶望よ - 绝望通讯文学社]]
24+ [[https://www.dizzylab.net/d/ZnG1/][Z世代工口游戏 #1 - 葱音摇滚社]]
25
26
27  
28* Articles from blog I follow
29#+NAME: rssfeeds
30#+begin_src elisp :exports none
31'("https://7ji.github.io/feed.xml"
32  "https://emersion.fr/blog/atom.xml"
33  "https://eli.thegreenplace.net/feeds/all.atom.xml"
34  "https://herbsutter.com/feed/"
35  "https://shansing.com/feed/")
36#+end_src
37
38#+begin_src python :exports results :eval never-export :results raw :var feeds=rssfeeds
39import asyncio
40import aiohttp
41import feedparser
42
43docs=[]
44
45async def rss_feed_to_orgdoc(session: aiohttp.ClientSession, feed_url:str, limit:int=3):
46    async with session.get(feed_url) as response:
47        text = await response.text()
48        feed = feedparser.parse(text)
49        entries = []
50
51        for entry in feed.entries:
52            if entry.link: entries.append((entry.published_parsed, f"| [[{entry.link}][{entry.title}]] | [[{feed['feed']['link']}][{feed['feed']['title']}]]|"))
53        return entries[:limit]
54
55async def main():
56    tasks: list[asyncio.Task[object]] = []
57    async with aiohttp.ClientSession() as session:
58        async with asyncio.TaskGroup() as tg:
59            for i in feeds:
60                task = tg.create_task(rss_feed_to_orgdoc(session, i))
61                tasks.append(task)
62    docs=[]
63    for t in tasks:
64        docs += t.result()
65    docs.sort(key=lambda i: i[0], reverse=True)
66    docs = docs[:15]
67    return '| Title | Site|\n|------------+----------------------|\n' + '\n'.join([i[1] for i in docs])
68
69return asyncio.run(main())
70#+end_src
71
72#+RESULTS:
73| Title                                                                      | Site                    |
74|----------------------------------------------------------------------------+-------------------------|
75| [[https://7ji.github.io/reliability/2026/07/28/win-vm-rw-on-linux-ro.html][Pseudo writability of read-only physical disk for Windows VM on Linux host]] | [[https://7ji.github.io/][7Ji’s Blog]]              |
76| [[https://eli.thegreenplace.net/2026/notes-on-the-fourier-transform/][Notes on the Fourier Transform]]                                             | [[https://eli.thegreenplace.net/][Eli Bendersky's website]] |
77| [[https://eli.thegreenplace.net/2026/dot-product-component-vs-geometric-definition/][Dot product: Component vs. Geometric definition]]                            | [[https://eli.thegreenplace.net/][Eli Bendersky's website]] |
78| [[https://eli.thegreenplace.net/2026/summary-of-reading-april-june-2026/][Summary of reading: April - June 2026]]                                      | [[https://eli.thegreenplace.net/][Eli Bendersky's website]] |
79| [[https://herbsutter.com/2026/06/28/gor-nishanov-1971-2026/][Gor Nishanov (1971-2026)]]                                                   | [[https://herbsutter.com][Sutter’s Mill]]           |
80| [[https://herbsutter.com/2026/06/28/new-york-panel-video-is-now-online/][New York panel video is now online]]                                         | [[https://herbsutter.com][Sutter’s Mill]]           |
81| [[https://herbsutter.com/2026/06/13/brno-trip-report/][Trip report: June 2026 ISO C++ standards meeting (Brno, Czechia)]]           | [[https://herbsutter.com][Sutter’s Mill]]           |
82| [[https://7ji.github.io/designdoc/2026/03/03/into-Alpine-APK-v3-format-the-binary-perspective.html][Into Alpine APK v3 format: the binary perspective]]                          | [[https://7ji.github.io/][7Ji’s Blog]]              |
83| [[https://shansing.com/read/560/][Kubuntu 体验]]                                                               | [[https://shansing.com/][闪星空间]]                |
84| [[https://shansing.com/read/559/][让 Snipaste 使用微信 OCR(Linux)]]                                          | [[https://shansing.com/][闪星空间]]                |
85| [[https://emersion.fr/blog/2026/status-update-84/][Status update, February 2026]]                                               | [[https://emersion.fr/blog/][emersion]]                |
86| [[https://shansing.com/read/558/][量子保鲜记]]                                                                 | [[https://shansing.com/][闪星空间]]                |
87| [[https://emersion.fr/blog/2026/status-update-83/][Status update, January 2026]]                                                | [[https://emersion.fr/blog/][emersion]]                |
88| [[https://emersion.fr/blog/2025/status-update-82/][Status update, December 2025]]                                               | [[https://emersion.fr/blog/][emersion]]                |
89| [[https://7ji.github.io/booting/2025/11/14/multi-arch-multi-distro-in-one-root-drive.html][Multi-architecture multi-distro in one root partition]]                      | [[https://7ji.github.io/][7Ji’s Blog]]              |