News for hackers. Stuff that matters.

lukeed

in the app ui it colors the agent icon yellow for "working". green for done, red for blocked, otherwise default grey for idle. You can also filter the tab list by agent state too, if you only want to see your done and/or blocked agents for example
Zero, as far as I can tell. Maybe there will be a few by the end of the 14d window. Developers are a stubborn/interesting target group -- I bet there will be more built-it-myself variants than purchases.
Thank you <3 These days, it's mostly for walks or errands or random a-ha moments. The nice part about trusting the notifications & the pipeline is that I don't have to babysit my agents at all & can just focus on the baby~
Are you running fish shell? If so, this was fixed and waiting on AppStore approval to release it.

Let me remind you that this is/was my ironclad setup. It should work for others, but may not due to preferential or not-my-machine technical reasons. The latter is solved by bug reports. Either way, there's a free trial and you pay nothing & shouldn't unless you like it.

That said, if this is a requirement I can definitely look into adding it... optionally, as you said :)
Thanks! Perhaps we have different trust levels, but I prefer to have an ssh key per service/identity/device so that I can revoke specific items as needed. Plus, getting the key onto the host device is automated once you have the sibling daemon (brew install lukeed/tap/pocketty) running. It just takes a device-pairing code, much like adding a new Apple device to your iCloud acct

Show HN: Pocketty – iPhone SSH terminal that pings you when an agent is blocked

https://pocketty.app/

Hello~! pocketty is an SSH terminal for iPhone and iPad, made for herdr. herdr keeps your agent panes alive on your computer and knows the state of each one: working, needs you, or done.I made this in anger/desperation for the latter half of my recent paternity leave. Nap traps are sweet, but there's only so much doom-scrolling and movie-watching I can handle... In any event, I've been using it...

( Read More... | 21 comments | 8 points | on HN )
Re:Why is OAuth still hard in 2023? on Tuesday May 02, 2023 @07:35PM (#35795710)
insane indeed. btn.social is 1 cent for 100 logins. no MAU shenanigans. won't bankrupt/drain most startups
Re:Why is OAuth still hard in 2023? on Thursday April 27, 2023 @08:35AM (#35727087)
For sure! There are some larger examples coming so that people can see it plugged into a more real-world application.

RE: onlogin, that method accepts a callback handler that is added to an internal/private array of callbacks to run once the `popup` or `redirect` sequence has finalized. It's the only externally-facing "doorway" into the OAuth flow. Everything else is inciting action (`popup()` and `redirect()`) or a read-out of the last-known payload (`last()`). It's actually very similar to a state manager I wrote a while back[1]. Callbacks are added via `$.on()` which assembles an internal `tree` map to be `dispatch`d once a change happens.

You've probably already seen the API docs for the btn.social SDK, but linking just in case[2]

[1]: https://github.com/lukeed/vegemite/blob/master/src/index.js

[2]: https://docs.btn.social/usage/#methods

Re:Why is OAuth still hard in 2023? on Wednesday April 26, 2023 @09:24PM (#35722115)
Thank you! Not sure, just part of the orange site mystery~

Your `onlogin` callback will only ever be invoked by the SDK on successful login. So the data coming thru there is always the result of the OAuth flow itself. For MPAs, you can create your own document cookie and/or modify local/sessionStorage, and then every new page load will pull/load from those storage systems. SPAs can & should do the same – they just have the added benefit of keeping in-memory state alive.

As for POSTing to your backend, the same XSRF/CSRF/CORS rules & mechanisms apply as with any other client->server transaction. You can rely on CORS for limiting who can talk to your API, you can pass along a unique token for CSRF prevention, and/or come up with your own Authorization header format.

Soon I'll be adding a `redirect_uri` config option for all btn.social apps. Much like the normal `redirect_uri` in OAuth, this will be a target URL that btn.social redirects users to post-login. This will enable server-side redirects, which means that your API just has to verify the "login.btn.social" referer.

Re:Why is OAuth still hard in 2023? on Wednesday April 26, 2023 @03:51PM (#35719027)
It's easy with https://btn.social/ :D

I made this because I was tired of asking the same question.

There are a bunch of services out there trying to address the same thing, but unfortunately they get wildly expensive and they own/control your user data.

Professionally, I've been a consultant and freelance developer for 10+ years. Time and time again I'd see teams start with Auth0/etc, only to eventually:

1. duplicate user data into their own DB/Cache to avoid the latency of asking Auth0 for user data

2. remove Auth0 entirely because having active users !== having paying users... so Auth0's monthly bill of $3000 to $10000+ couldn't be justified

3. #1 then eventually #2

btn.social is just as simple to set up, but has predictable & transparent pricing with volume discounts the more you use it. At its most expensive, it's 100 logins per penny ($0.01), which is to say that "MAUs" are a thing of the past.

As quick pricing comparison:

- Auth0's (public) pricing calculator [1] shows 10k MAUs for $228/mo. That just means 10k users logged in 1+ time(s) that month. In btn.social terms, that's 10k, 20k, or 30k logins depending on if each of those users logged in 1x, 2x, or 3x (etc). For $5, you get 50k logins with btn.social.... and for $169 you get 2.5M logins... [2]

- Supabase charges $25/mo, which includes a lot more than just OAuth(!) but if you look at Auth alone, that $25 includes 100k MAUs and is an additional $0.00325 per MAU thereafter [3]. Assuming 1x login per MAU, that's $2950/mo for 1M users. With btn's "Business" tier, you get 1M logins for $79/mo, but of course there's still the $169 for 2.5M if you don't like the "1x login per MAU" assumption.

Another key difference is that btn.social saves nothing about your users.

It's your app so you get to keep your data. You'll never need to have to ask btn.social for Alex's profile because we won't have it :D This means we're privacy-first & we don't add/pose a risk for GDPR concerns.

btn.social was just launched last week [4], so some additional guides & examples are still underway, but there are already 10+ OAuth providers [5] to choose from & a free/"Hobby" tier so anyone can start playing around in just a few minutes.

[1]: https://auth0.com/pricing

[2]: https://btn.social/#pricing

[3]: https://supabase.com/pricing#compare-plans

[4]: https://twitter.com/lukeed05/status/1648751062340501505

[5]: https://docs.btn.social/providers/

Re:Why we switched from Webpack to Vite on Wednesday April 28, 2021 @08:01PM (#26975759)
Well said – everything new does not need to be a replacement for something else. Options/choices are good, especially because each one can lean into a different solution space.
Main takeaways:

- 0.4kb vs 12kb for official client (gzip)

- Respects visitors' `doNotTrack` settings

- Does not ship internal XHR library

- Correlates to the Google docs

- API is 99% familiar, haha

- Well-documented

- Cacheable

It isn't exactly a drop-in replacement, but the tweaks needed are incredibly minor.

The GET requests are made via `new Image()`, which is a low priority network request, so your critical requests won't be blocked or delayed because of a trivial `pageview` analytic.

Internet Explorer is not supported by default; however, it's VERY easy to regain compatibility. `Object.assign` is the only roadblock, which has a Babel quick-fix.

Hope you enjoy! And feel free to ask questions. Thanks!

Size isn't everything ;-)

A smaller footprint _does_ usually signify a faster load time, but that can easily be overruled by how its internals are parsed (aka, interpreted by the browser).

For example, 1kb script can intentionally block the mainframe for 10seconds, thus making it slower than a 40kb moderate-performing competitor.

Inferno is optimized for the entire performance profile. Preact may load & parse faster -- but only by a HAIR (10-50ms). Inferno does everything else much faster.

So, do you consider the `load` event (which will occur once in the UX) to be more valuable than the every other interaction?