pilcrowonpaper Profile Banner
pilcrow Profile
pilcrow

@pilcrowonpaper

Followers
7K
Following
4K
Media
387
Statuses
3K

Open-source developer interested in auth and security. Working on @lucia_auth and @oslo_project

Tokyo, Japan
Joined November 2017
Don't wanna be here? Send us removal request.
@pilcrowonpaper
pilcrow
11 months
Hi everyone. I now accept donations via GitHub Sponsors. Please consider supporting my open source work and help me make auth more accessible. I’m starting university next month so even a small amount would go a long way :D.
7
24
270
@pilcrowonpaper
pilcrow
10 months
lmao they just replaceAll()-ed twitter(.)com with x(.)com.
@Ryoga_exe
🌱
10 months
← iOS で見たら netflix/.com に見えるってこと?.
42
463
5K
@pilcrowonpaper
pilcrow
11 months
Announcing the Copenhagen Book - an open source guide on implementing auth for the web! It covers everything, including sessions, CSRF protection, passkeys, OAuth, 2FA, email verification, and password reset.
28
237
1K
@pilcrowonpaper
pilcrow
1 year
Can we stop naming APIs `$`?.
@bunjavascript
Bun
1 year
Introducing the Bun Shell. Cross-platform shell language & interpreter for shell scripting with JavaScript
Tweet media one
94
30
1K
@pilcrowonpaper
pilcrow
10 months
I'm still confused why Hetzner is so cheap. Like 2vCPU/4GB (shared) is $5 while it's $20 everywhere else???.
80
27
941
@pilcrowonpaper
pilcrow
5 months
okay hear me out
Tweet media one
@pilcrowonpaper
pilcrow
5 months
Do I need to rename the Twitter OAuth provider to X?.
13
33
862
@pilcrowonpaper
pilcrow
1 year
I still can't believe this but. @astrodotbuild has awarded me a $10,000 grant for my work on Lucia!!!!!! Thank you!!.
@astrodotbuild
Astro
1 year
Introducing: The $100,000 Astro Ecosystem Fund. Astro usage is exploding! To support our growing ecosystem, we are donating our own open-source funding to award ten $10,000 grants to essential maintainers across our community. Learn more:.
69
38
814
@pilcrowonpaper
pilcrow
10 months
What makes this even funnier is that it's done on the client and not the server.
5
4
781
@pilcrowonpaper
pilcrow
1 year
My frustration with Next.js.
48
88
774
@pilcrowonpaper
pilcrow
1 year
???
Tweet media one
82
23
704
@pilcrowonpaper
pilcrow
3 months
Please share your personal website or blog! I quite enjoy looking and comparing them.
439
25
706
@pilcrowonpaper
pilcrow
1 year
Already wrote 5 pages. Hopefully I can release it by March
Tweet media one
23
37
689
@pilcrowonpaper
pilcrow
1 year
Is this cursed?
Tweet media one
45
27
621
@pilcrowonpaper
pilcrow
3 months
Announcing Faroe - an open source, self-hosted, and modular backend specifically for email and password authentication! I crammed everything you hate about credential auth into a single binary :D.
18
46
627
@pilcrowonpaper
pilcrow
1 year
mongodb was a mistake
Tweet media one
56
19
600
@pilcrowonpaper
pilcrow
3 months
Got it working! It's like 5x more complex than a regular OAuth flow
16
15
610
@pilcrowonpaper
pilcrow
4 months
I am planning to deprecate Lucia early next year and make it a general learning resource on auth instead. It pains me but I am confident that this is the best way forward. The early preview is available below.
46
48
593
@pilcrowonpaper
pilcrow
11 months
Ahhhhhhhhhhh I finally got it!. Big shoutout to @astrodotbuild!!!
Tweet media one
36
6
537
@pilcrowonpaper
pilcrow
3 months
Do all JS formatters do this?. const result =. superLongFunctionName();. I'd much prefer this. const result = superLongFunctionName();.
38
5
541
@pilcrowonpaper
pilcrow
1 year
Option 3: Use URLSearchParams.
@jamesqquick
James Q Quick
1 year
Just found out some people prefer string concatenation over string interpolation. WAHHHH?!. What do you prefer?
Tweet media one
15
10
520
@pilcrowonpaper
pilcrow
1 year
Realtime chat application with just fetch() and HTTP!
14
23
514
@pilcrowonpaper
pilcrow
9 months
Announcing Oslo - a new open source project to provide high-quality auth packages across the ecosystem! Runtime-agnostic, fully-typed, and zero third-party dependencies .
10
40
498
@pilcrowonpaper
pilcrow
9 months
If you’re doing this. function create() {. return {. a: () => {}. }.}. just use classes.
42
23
482
@pilcrowonpaper
pilcrow
5 months
Oslo packages are now stable! Simple, fully-typed, runtime-agnostic, and zero third-party dependencies. - oslojs/encoding.- oslojs/crypto.- oslojs/webauthn.- oslojs/otp.- oslojs/asn1.- oslojs/cbor.- oslojs/binary.
15
42
438
@pilcrowonpaper
pilcrow
1 year
Announcing Lucia 3.0!.
19
53
437
@pilcrowonpaper
pilcrow
2 years
Please please please learn about the basics of HTTP, XSS, injection, database querying, cookies, CSRF, and CORS before doing any auth stuff in the server. This also applies if you're using ready made solutions like Auth0, Clerk, and NextAuth.
6
54
422
@pilcrowonpaper
pilcrow
7 months
New blog post on how I would implement auth!.
18
34
377
@pilcrowonpaper
pilcrow
10 months
New blog post: Please stop using middleware to protect your routes .
31
43
369
@pilcrowonpaper
pilcrow
7 months
Email verification + password reset + TOTP in 6 hours :D. Haven't implemented rate limiting and login throttling yet, but that should only take another day at most. I might build a full tutorial on it in the near future
21
6
354
@pilcrowonpaper
pilcrow
9 months
please just stop with the transitions
32
8
336
@pilcrowonpaper
pilcrow
1 year
nah JS isn't for the server.
40
22
333
@pilcrowonpaper
pilcrow
10 months
Just learned about URL.parse(). It allows you to check the validity of URLs without using try/catch. Looks like its getting added to runtimes and browsers this year
Tweet media one
12
30
336
@pilcrowonpaper
pilcrow
9 months
Here's Lucia in < 100 lines of code
Tweet media one
9
13
326
@pilcrowonpaper
pilcrow
1 year
I never truly appreciated Vite until I used Next.js.
21
17
322
@pilcrowonpaper
pilcrow
5 months
New library :D. Finally figured out how to abstract JWTs into a library.
5
11
320
@pilcrowonpaper
pilcrow
1 year
Not sure how to share this but I'm 19 lol. Same age group as @nexxeln and @aidenybai I guess.
38
5
310
@pilcrowonpaper
pilcrow
1 year
Finished all 10 pages now. Gonna make some improvements over the next few days, and I'll probably have some people review it. Let me know if you're open to proofreading it, especially if you work on auth/security :D.
@pilcrowonpaper
pilcrow
1 year
Already wrote 5 pages. Hopefully I can release it by March
Tweet media one
20
8
313
@pilcrowonpaper
pilcrow
11 months
I moved all my static sites from Vercel to Cloudflare. I don't use the preview deployments anyway. Thinking about playing around with a VPS and moving stuff away from serverless too.
23
3
302
@pilcrowonpaper
pilcrow
7 months
It's my 20th birthday today!!!🎉🎉🎉.
39
0
278
@pilcrowonpaper
pilcrow
1 year
lmaoooo. my blog is in a @fireship_dev video
Tweet media one
9
2
269
@pilcrowonpaper
pilcrow
2 months
This is super embarrassing but my AT Protocol OAuth example had a major security vulnerability where one could authenticate as any user. If your app used my code, you should fix it immediately. This was a major oversight on my part and I'm sorry.
10
12
256
@pilcrowonpaper
pilcrow
7 months
I'm fully sold on Go.
24
10
248
@pilcrowonpaper
pilcrow
4 months
Share all the Auth0 and Keycloak alternatives you know, preferably open source.- SuperTokens.- Supabase.- Logto.- Clerk.- Athentik.- Stack auth.- PocketBase.- FusionAuth.- Zitadel.
25
15
250
@pilcrowonpaper
pilcrow
4 months
The new site is now live!. Lucia v3 will be deprecated by March 2025. Big thanks to everyone who contributed to the library.
1
15
246
@pilcrowonpaper
pilcrow
2 years
I'm going to test the latency/performance of popular DB providers. Any other providers I should test?.- Supabase.- Neon.- PlanetScale.- Vercel.- Turso.- Railway (maybe?). I'm going to test different drivers/ORM to see if there are any other performance implications as well.
72
10
241
@pilcrowonpaper
pilcrow
11 months
Why are people so adamant on protecting resources with middleware? It’s like a single if statement. Just do it in a per-route basis. It’s not hard. It’s even less bug-prone and easier to debug since all the logic is in a single location. Just stop.
54
3
239
@pilcrowonpaper
pilcrow
8 months
All my packages have zero third-party dependencies ;D.
13
1
232
@pilcrowonpaper
pilcrow
2 months
Dear OAuth providers.
13
27
237
@pilcrowonpaper
pilcrow
1 year
Fuck it. Lucia v3 stable will be released this weekend alongside Oslo v1 and Arctic v1.
21
12
229
@pilcrowonpaper
pilcrow
1 year
Anything missing?.- Tokens (in general).- Sessions lifetime, storage.- Password validation, hashing, credential stuffing.- Email verification code/links, input validation.- Password reset links.- MFA (TOTP).- OAuth, PKCE, OIDC, account linking.- Passkeys.- CSRF.
27
7
229
@pilcrowonpaper
pilcrow
11 months
Looks like it uses Drizzle ORM - so I guess Lucia supports Astro DB from day 0!.
@astrodotbuild
Astro
11 months
Introducing: Astro DB. Add a hosted database to any Astro project in seconds. Includes a TypeScript ORM, schema manager, and automatic migrations out-of-the-box. Try it today! Every database comes with a generous free tier for you to get started.
6
9
223
@pilcrowonpaper
pilcrow
1 year
Why are people installing it???? I SAID IT WAS VERY EXPERIMENTAL
Tweet media one
23
1
216
@pilcrowonpaper
pilcrow
1 year
Why I hate working with Next.js:
Tweet media one
Tweet media two
15
9
214
@pilcrowonpaper
pilcrow
7 months
Full email and password auth example in Astro with email verification, 2FA via TOTP, password reset, and rate limiting.
6
8
220
@pilcrowonpaper
pilcrow
2 years
I'm excited to announce that Lucia now supports @nuxt_js, complete with docs, with version 1.7!!. Get started here:.
10
32
206
@pilcrowonpaper
pilcrow
8 months
Honoooooo
Tweet media one
6
1
209
@pilcrowonpaper
pilcrow
9 months
I actually made the logo! Pretty happy with it, tho a professional touch up would be nice
Tweet media one
16
2
201
@pilcrowonpaper
pilcrow
6 months
Full auth example in Astro with password, email verification, rate limiting, TOTP, passkeys, and security keys.
@pilcrowonpaper
pilcrow
6 months
Working on a passkeys variant of the auth example
6
14
201
@pilcrowonpaper
pilcrow
9 months
The hardest part about implementing Google OAuth is navigating through Google's docs and dashboard.
16
7
203
@pilcrowonpaper
pilcrow
1 year
New blog post, something positive this time!.
11
13
193
@pilcrowonpaper
pilcrow
11 months
Astro DB adapter (unofficial). npm i lucia-adapter-astrodb.
10
19
197
@pilcrowonpaper
pilcrow
1 year
People who say it's fine would use emojis as function names if they could.
12
1
196
@pilcrowonpaper
pilcrow
10 months
I know some people are confused as to why I went to university instead of getting a job. I wanted to learn CS concepts and theories, and I thought it’d be a good opportunity to find like-minded friends. I might be wasting time but who cares.
18
2
188
@pilcrowonpaper
pilcrow
10 months
If React doesn't want people to use it, they should just rename the variable on every release.
@sebastienlorber
Seb ⚛️ ThisWeekInReact.com
10 months
No One Ever Got Fired for Choosing React 19
Tweet media one
4
5
186
@pilcrowonpaper
pilcrow
11 months
Auth built with Lucia :D.
@astrodotbuild
Astro
11 months
The Astro Theme Portal just launched! Submit, update, and publish your themes in the official Astro theme catalog. ✨Built with Astro DB! Forms, user authentication, and image uploads all powered by Astro's new hosted database platform.
4
3
192
@pilcrowonpaper
pilcrow
1 year
I wrote a short blog on cookies vs local storage.
6
21
185
@pilcrowonpaper
pilcrow
11 months
I'll be releasing the authentication guidebook this Saturday. It has not been thoroughly proofread tho (underestimated the time required) so keep in mind there may be numerous mistakes.
5
3
188
@pilcrowonpaper
pilcrow
11 months
Big thank you to Prisma for supporting my work!.
@prisma
Prisma
11 months
💜Proud to support @lucia_auth through our FOSS fund. Lucia is a TS-first library-oriented approach to auth in JS. We love how it provides an easy-to-use alternative to large libraries or SaaS approaches. Kudos to @pilcrowonpaper!. Check it out⭐️.
Tweet media one
1
3
176
@pilcrowonpaper
pilcrow
1 year
Soft announcing Oslo! This is a much bare, yet feature rich alternative to Lucia. It provides utilities for:.- session management.- cookies.- OAuth.- generating random strings.- csrf protection.- hashing passwords.- managing verification tokens.
6
16
181
@pilcrowonpaper
pilcrow
2 years
I'm super excited to announce Lucia 2.0!.
4
28
175
@pilcrowonpaper
pilcrow
8 months
Announcing oslojs/webauthn, a new @oslo_project package for the Web Authentication API!. Needs a lot more testing but it's finally here!!! Learned so much about passkeys, CBOR, COSE, ASN.1, X.509, and ECDSA!.
3
9
172
@pilcrowonpaper
pilcrow
1 year
Lucia hit 10k weekly downloads! 2023 has been an amazing year:.- +10K weekly downloads.- +4k github stars.- +2.5k twitter followers.- +1k discord members
Tweet media one
9
4
169
@pilcrowonpaper
pilcrow
2 months
I’m sorry but TanStack Start and Solid Start are horrible names.
7
0
172
@pilcrowonpaper
pilcrow
1 year
So. Many. Webpack. Issues. In. Next.js.
14
2
162
@pilcrowonpaper
pilcrow
4 months
I’m trying out Zed again and the biggest thing missing for me is a Git integration and a spell checker.
17
2
169
@pilcrowonpaper
pilcrow
11 months
Hoooly shit - thank you to all my sponsors! That's more than enough to cover my expenses and then some, and this doesn't include all the one time donations.
Tweet media one
3
0
159
@pilcrowonpaper
pilcrow
8 months
Added @honojs examples to the Lucia repository!.#honoconf.
4
12
154
@pilcrowonpaper
pilcrow
1 year
Also, all the code examples are written in Go since I found it to be the most sane and readable :D.
@pilcrowonpaper
pilcrow
1 year
Already wrote 5 pages. Hopefully I can release it by March
Tweet media one
7
3
153
@pilcrowonpaper
pilcrow
6 months
Ughh, can we please stop spreading conspiracy theories, and like pretty much anything from Libs of TikTok?.
@mjackson
MJ
6 months
Two weeks after the event, Google autocomplete results for “assassination attempt on” do not include any mention of Trump
Tweet media one
Tweet media two
14
2
145
@pilcrowonpaper
pilcrow
10 months
I don’t think people fully understand how much time is spent on API design and reviewing/testing PRs in open-source projects. It’s not just writing code, and in fact that’s usually the easy part.
4
2
149
@pilcrowonpaper
pilcrow
11 months
Can we please stop trying to condense everything into a single function? Just create sha1(), sha256(), sha384(), etc
Tweet media one
8
2
151
@pilcrowonpaper
pilcrow
2 years
What's the fastest serverless database?. I compared the latency of tons of popular and upcoming database providers, including Neon, PlanetScale, Supabase, and Turso - see the results for yourself!.
13
32
151
@pilcrowonpaper
pilcrow
2 years
I tried Nuxt again. - Docs lacking for H3 (had to read source).- $fetch() can't send url encoded forms.- API Routes *must* return an object (where was that mentioned?).- navigateTo() returns promise => can't use if statements to narrow types.- Vue is still confusing.
15
5
143
@pilcrowonpaper
pilcrow
1 year
So. I built my own http framework lol. Not sure how portable this pattern is but it's based on Node.js, Express, and Go
Tweet media one
9
0
140
@pilcrowonpaper
pilcrow
10 months
my general approach to learning new stuff has been brute force - play around, look at examples, read stack overflow answers, and repeat that until something clicks.
6
8
139
@pilcrowonpaper
pilcrow
1 year
What do you get from using JWTs instead of regular db sessions? I could see why some auth providers use them since there’s no guarantee their customers’ servers are close to their’s, but that really isn’t an issue if you self host.
34
8
143
@pilcrowonpaper
pilcrow
1 year
I feel like 80% of modern websites can just be written with vanilla JS/TS and still be reasonably maintainable. Another 10% would just need to embed client rendered JS framework components on top of it.
14
7
139
@pilcrowonpaper
pilcrow
4 months
@webdevcody I was afraid you’d bring this up lol. Technically I’m not fully abandoning the project but I’ll just take the L here.
5
0
137
@pilcrowonpaper
pilcrow
4 months
tbh Lucia was probably a good introduction on auth for beginners. Maybe a video tutorial will cover the same itch? Videos feel more beginner friendly than text.
6
0
139
@pilcrowonpaper
pilcrow
2 years
I'm super excited to announce Lucia 1.0!.
5
23
136
@pilcrowonpaper
pilcrow
4 months
Really excited about this one!
Tweet media one
6
0
135
@pilcrowonpaper
pilcrow
6 months
Working on a passkeys variant of the auth example
4
5
130
@pilcrowonpaper
pilcrow
1 year
I treat Lucia, and all my other projects, as community *informed* projects instead of community *driven*. I'm open to feedback but I still have a certain vision and goals. That might make my stuff feel less open to contributions.
13
4
133
@pilcrowonpaper
pilcrow
4 months
Announcing Arctic v2! Not a very big update but cleaner APIs and even more providers.
3
6
132
@pilcrowonpaper
pilcrow
1 year
Go's concurrency model is pretty cool
Tweet media one
10
6
130
@pilcrowonpaper
pilcrow
4 months
Early preview but over the past month, I've worked on fully fledged examples with password auth, 2FA, email verification, passkeys, rate limiting, and password resets for Next.js, Sveltekit, and Astro.
3
7
132
@pilcrowonpaper
pilcrow
7 months
I would probably quit university if I get a job offer that would help me get a US visa (or even Canada).
9
4
129
@pilcrowonpaper
pilcrow
9 months
Fun fact: The @oslo_project homepage is a single HTML file. No JS, no frameworks, no tailwind.
4
5
127
@pilcrowonpaper
pilcrow
1 year
Lucia does not and will not support JWTs. Even if JWT based sessions didn’t suck, it doesn’t make sense for a single library to handle 2 widely different things.
9
2
121
@pilcrowonpaper
pilcrow
4 months
I find third party login to be a solved issue. OAuth isn't particularly hard and sessions aren't either. I really don't see a reason to bring in a framework or paid service for it. But email+password. ;D.
7
3
122