惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Spread Privacy
Spread Privacy
K
Kaspersky official blog
Application and Cybersecurity Blog
Application and Cybersecurity Blog
Forbes - Security
Forbes - Security
Hacker News - Newest:
Hacker News - Newest: "LLM"
The Last Watchdog
The Last Watchdog
SecWiki News
SecWiki News
Attack and Defense Labs
Attack and Defense Labs
Google DeepMind News
Google DeepMind News
Security Archives - TechRepublic
Security Archives - TechRepublic
S
Secure Thoughts
WordPress大学
WordPress大学
Microsoft Security Blog
Microsoft Security Blog
P
Proofpoint News Feed
云风的 BLOG
云风的 BLOG
V
Visual Studio Blog
Security Latest
Security Latest
TaoSecurity Blog
TaoSecurity Blog
Cyberwarzone
Cyberwarzone
S
SegmentFault 最新的问题
Cloudbric
Cloudbric
aimingoo的专栏
aimingoo的专栏
S
Schneier on Security
N
Netflix TechBlog - Medium
MyScale Blog
MyScale Blog
T
The Blog of Author Tim Ferriss
H
Hacker News: Front Page
C
Cybersecurity and Infrastructure Security Agency CISA
小众软件
小众软件
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
AWS News Blog
AWS News Blog
AI
AI
G
GRAHAM CLULEY
IT之家
IT之家
P
Privacy & Cybersecurity Law Blog
L
Lohrmann on Cybersecurity
Last Week in AI
Last Week in AI
D
Docker
Recent Announcements
Recent Announcements
O
OpenAI News
T
Threat Research - Cisco Blogs
GbyAI
GbyAI
S
Security @ Cisco Blogs
T
Troy Hunt's Blog
C
Check Point Blog
博客园 - 三生石上(FineUI控件)
A
About on SuperTechFans
The Cloudflare Blog
阮一峰的网络日志
阮一峰的网络日志
N
News and Events Feed by Topic

oida.dev | TypeScript, Rust

TypeScript's `erasableSyntaxOnly` Flag Unsafe for work Tokio: Macros Tokio: Channels Tokio: Getting Started Network Applications on the Tokio Stack Remake, Remodel, Reduce. The `never` type and error handling in TypeScript 5 Inconvenient Truths about TypeScript Refactoring in Rust: Introducing Traits Refactoring in Rust: Abstraction with the Newtype Pattern Announcing the TypeScript Cookbook TypeScript: Iterating over objects The road to universal JavaScript 10 years of oida.dev Rust: Tiny little traits The TypeScript converging point How not to learn TypeScript Getting started with Rust TypeScript: The humble function overload TypeScript + React: Children types are broken TypeScript: In defense of any Rust: Enums to wrap multiple errors Dissecting Deno Error handling in Rust TypeScript: Unexpected intersections Upgrading Node.js dependencies after a yarn audit TypeScript: Array.includes on narrow types TypeScript + React: Typing Generic forwardRefs shared, util, core: Schroedinger's module names Learning Rust and Go TypeScript: Narrow types in catch clauses TypeScript: Low maintenance types Tidy TypeScript: Name your generics Tidy TypeScript: Avoid traditional OOP patterns Tidy TypeScript: Prefer type aliases over interfaces Tidy TypeScript: Prefer union types over enums My new book: TypeScript in 50 Lessons Go Preact! ❤️ this in JavaScript and TypeScript TypeScript and ECMAScript Modules TypeScript + React: Why I don't use React.FC TypeScript + React: Component patterns TypeScript: Augmenting global and lib.dom.d.ts Vite with Preact and TypeScript TypeScript: Union to intersection type 11ty: Generate Twitter cards automatically Are large node module dependencies an issue? TypeScript: Variadic Tuple Types Preview TypeScript: Improving Object.keys Remake, Remodel. Part 4. TypeScript + React: Typing custom hooks with tuple types TypeScript: Assertion signatures and Object.defineProperty TypeScript: Check for object properties and narrow down type Boolean in JavaScript and TypeScript void in JavaScript and TypeScript Symbols in JavaScript and TypeScript Why I use TypeScript TypeScript + React: Extending JSX Elements TypeScript: Validate mapped types and const context TypeScript: Match the exact object shape TypeScript: The constructor interface pattern Streaming your Meetup - Part 4: Directing and Streaming with OBS Streaming your Meetup - Part 3: Speaker audio Streaming your Meetup - Part 2: Speaker video Streaming your Meetup - Part 1: Basics and Projector TypeScript and React Guide: Added a new styles chapter TypeScript and React Guide: Added a new render props chapter TypeScript and React: Styles and CSS TypeScript and React TypeScript and React Guide: Added a new prop types chapter TypeScript without TypeScript -- JSDoc superpowers TypeScript: Mapped types for type maps JAMStack vs serverless web apps The Unsung Benefits of JAMStack Sites TypeScript: Ambient modules for Webpack loaders My most favourite talks in 2018 TypeScript and React Guide: Added a new context chapter TypeScript: Built-in generic types TypeScript: Type predicates JSX is syntactic sugar TypeScript and React Guide: Added a new hooks chapter Getting your CfP application right FAQ on our Angular Connect Talk: Automating UI development TypeScript and Substitutability Debugging Node.js apps in TypeScript with Visual Studio Code From Medium: Deconfusing Pre- and Post-processing From Medium: PostCSS misconceptions Saving and scraping a website with Puppeteer Cutting the mustard - 2018 edition Wordpress as CMS for your JAMStack sites My most favourite podcast episodes in 2017 My most favourite talks in 2017 My most favourite books in 2017 The Best Request Is No Request, Revisited Not so hidden figures - Organizing ScriptConf My podcast journey to ScriptCast Grid layout, grid layout everywhere! #scriptconf and #devone Object streams in Node.js
Introducing Slides and Coverage
2021-12-14 · via oida.dev | TypeScript, Rust

There’s a new section on this website! Since today, you’re able to see full coverage of my workshops and talks in the new slides and coverage section. That’s the announcement. If you want to see more, head over to the new section. If you want a little “Making of”, please continue with this article.

The motivation #

I’m very open to publishing material from my talks and workshops. It’s the common courtesy with talks to show what you’ve presented. Some folks are a bit more hesitant with what they publish as workshop slides, as it’s how they make money.

I understand that, but I also think that slides just show a part of the whole picture. You get an idea, but you’d need my talking over it and seeing the examples evolve so you understand what’s really happening. At best, I get some opportunities for sharing. There’ve been some occasions where I was able to give a workshop because they’ve seen the material. And my first book was a direct result of publishing my slides for a Grunt and Gulp workshop on Speakerdeck.

In the beginning, I was using Speakerdeck, which was owned by GitHub back then. Speakerdeck was nice, and not so ad-ridden as some competitors were. At one point in time, it was sold, and the quality of the servers dropped significantly. I wasn’t able to reasonably view any slides on this platform. When the quality was stable again, which took a while, I already moved on.

I moved to Slideshare, then owned by LinkedIn. I didn’t particularly like the design nor the UX, but the slides were well discoverable and the performance was ok. Slideshare was sold last year and now it’s filled with dark UX patterns, annoying pop-ups, and the like. Ugh. This is not what I want my visitors to see.

I then remembered that I own a Notist account. I used the site to collect coverage. This means that I published slides elsewhere, included them on Notist, and added extra links and material. This was nice! A clean UI, nice editing capabilities. Just what I was looking for! You also could host the slides with Notist, so it really is an all-in-one platform. The quality comes at a price. A literal one. If you want to publish more than 5 talks a year, you have to go Pro.

I think the Pro account from Notist is totally worth its money. It’s 99 USD for a year, which is fair, and you really get a ton of benefits using it. The problem is that while Notist was great for its UI, the way Notist understands coverage is not how I do talks and workshops. I usually have one topic that I reuse for a multitude of talks and workshops. My TypeScript talks usually show the same examples under a different spotlight. The slides for the TypeScript Type System Deep Dive are plenty, and they’re remixed in so many ways depending on the audience.

I try to publish coverage as a whole, so the audience has enough context. Look at the Serverless Rust coverage. Those are the same slides, but I can do a 30-minute talk as well as a full-day workshop with it. This means that I’m probably below 5 distinct talks. But not within the range of the free tier.

I was looking for alternatives. It turned out there is only one reasonable alternative: Doing my own.

This also has another benefit: Instead of continuously writing articles in the last months, I was preparing workshops. This takes a ton more time, but this also means I have lots of content I wanted to share that isn’t within the usual form of articles. My website now keeps up to date, I can add new content even if it isn’t articles.

Rolling my own #

Arnd Issler pointed me towards PDF.js by Mozilla. This is not just “some” PDF library, it’s actively used as the PDF viewer in Firefox. The more you know! Some of the examples already looked like the things I’d need, so the direction became pretty clear.

It was Philipp Krenn who completed the picture. He’s been using PDF.js for quite a while on his own website successfully. He also pointed me to I Love PDF’s Compress page. They managed to reduce 90% of some of my PDF’s size. Which is astonishing.

And that’s what the new section is made of: PDF.js loading a compressed PDF, drawing it in a Canvas. Since PDF.js can be quite huge, I load everything asynchronously and on-demand. This is why you get a big “Load slides” button. The rest is “just another” section or collection within my 11ty setup.

I consider my website a wild mess of bad code, not using any best practices at all. But I’m still astonished at how easy it is to extend the existing website. The new section is obviously still beta, but I expect to improve controls over time. For a quick weekend hack, I’m pretty happy how it turned out!

Frequently asked questions #

Q: Why PDF slides? Why not use a Markdown-based tool and generate PDF, HTML, etc.?. Because I can’t create slides that way. I’ve tried! I miss the possibilities of designing slides, moving boxes around, creating animations. The tools are good, but I’m so much faster if I stick to Keynote. I also can’t use Powerpoint for that matter.

Q: Why don’t you just buy a Notist account?. I’m in the sweet spot between Pro and Casual. I don’t think I have the same needs as a real Pro user, but I’m beyond just trying it out. If you look at e.g. Hidde de Vries’s talks, that’s way more than I would ever create. Also, I like owning my content on my platform. It has served me well in the past.

Q: Why is there so little content?. Well, it’s 200+ slides over the course of 3 workshops. I consider that a lot, to be honest. If you are talking about the number of topics, that’s because it’s just the most recent content. I’m going to migrate some of my older slides, but I won’t move everything.

Q: Are you sharing all that, just for free?. Pretty much. You can still book a workshop if you like. I would highly recommend it.

Q: Where’s the cinema section?. Yeah, it’s still here, but I decided to drop it for my own content. I wasn’t updating it in over a year, and the “great talks” section moved over to the newsletter. So if you want to have talk recommendations, be sure to sign up!

Q: I found a bug!. Cool, send me a tweet and I’ll try to fix it.

Related Articles