HN user

nihakue

114 karma

[ my public key: https://keybase.io/kiddo; my proof: https://keybase.io/kiddo/sigs/lFvIH5mlGo46KdI_HLaS4ad3MJqm0YiMhh-bFXtFKaA ]

Posts1
Comments34
View on HN

https://www.robinsloan.com/notes/home-cooked-app/ This has never been truer than right now. What we need isn't app store ecoystems but to eliminate the friction for distributing apps to your inner circle. We're entering the WhatsApp era of software, where everyone is going to be using a home cooked version of every piece of software that can conceivably exist on an island, and it's going to be a vibe coded mess, but it's going to be lovingly maintained by the people that use it every day. This is why I'm bullish on things like https://sprites.dev/ (not affiliated, just a customer). I have a little self replicating starter template that lets me quickly stand up new sprites with all my stuff logged in, ttyd + tmux so I can run claude code in the browser from my phone, and a caddy reverse proxy so I can also host a little starter app behind the fly io relay that sprites get out of the box so I don't have to do any extra work to have a publicly accessible https url I can send to people. Using this set up I've created dozens of little silly web applications for my family and friends, none of them were more complicated than little sketches but we've gotten some real pleasure out of them. There's still quite a bit of friction here though and I think if someone can really make this seamless for people they'll have something really special.

As an example, the android options for printing to my outdated brother printer were all terrible (ad supported nokoprint for example), so I used my template to create https://print.walden-gabrielw.workers.dev/ (This one a put a cloudflare worker in front of because it's just a static html+js page and I didn't want to pay for uncached traffic but the principal is basically the same). No one will likely ever use this but me and my wife, but the cost to keep it up is basically 0, the cost to build it was very reasonable, and if it ever breaks I'm fairly confident the latest LLM will be able to debug it without too much trouble.

House Of Leaves was published in 2000 and Backrooms originates (as far as I can tell) from like 2011? Not that it's impossible that the ideas developed independently, but given how big a cult hit House of Leaves was I'd be very surprised if there wasn't some direct lineage. Not trying to gatekeep, it's just that the Backroom trailer was giving me _really distinct_ HoL vibes. I wonder if that's just the film mixing in ideas that weren't necessarily present in the original copypasta.

edit: Another thing I will say is that I've noticed both HoL and Backrooms seem to act like a kind of shibboleth for a particular demographic (not even really the same demographic) and you often see this in how people write/talk about both. I think it maybe stems from how dense/unapproachable the two works are, how innocuous they seem on the surface such that you really have to sink some effort to get at them.

Islands only link up every once in a while, so once you land on an island that's it at least for now. When islands link up you'll see a big '?' appear in the page header that you can click on to explore the linked island. There are two islands right now because the populations are low. There's a mechanism for discovering new islands as the island populations grow.

My hope is that by smooshing people together randomly and making it harder to move, people will have a new way (new old way?) of interacting online that has more of the good aspects of offline socialising. But you're 100% right that without a reason to engage it's going to be very quiet. I'm looking at different ways to tackle this that range from "it's a video game now" to something much more subtle.

Deno Sandbox 5 months ago

It's working now, thanks. While I've got your attention, it was a little bit of effort to wrap my head around the APIs when `sandbox create` uses --root AND/or --volume, `snapshot create` uses positional args <volumeIdOrSlug> <snapshotSlug>, and `volumes create` uses --from

I know that each of these things is subtly different, but they're similar enough that the bootable snapshot creation workflow (which I expect is a common one) has some sharp edges, since you have to interact with all three APIs at the same time.

Also, the CLI doesn't give a useful error when you try to create a snapshot from a currently attached volume.

Finally, updating a snapshot is more steps than I'd ideally like. I would much rather be able to make changes in a sandbox with a snapshot root and have them persist as a new snapshot. I kind of get why this isn't currently the case, but The volume/snapshot dance feels (for my usecase) like it's missing some abstraction.

That said, now that I've got a snapshot set up it's a nice experience. I've got an alias for `deno sandbox create --root dev --ssh` and I can `claude` in yolo mode without much fear.

Congratulations to the team :)

I'm building a tiny experimental message board / ...game? called Isles (https://isles.app/about). The short pitch is that when you sign up you're randomly assigned to a small island, and you can only interact with people on that island. Randomly, islands link up and you can migrate/explore the other island. I wanted to play with ideas of cultural exchange on a really small scale. I don't have any regular users yet, but if any of that is interesting to you, you should sign up if only to say hi.

Tech I'm using: Sprites, Cloudflare Workers, SQLite, Litestream, React SSR

Deno Sandbox 6 months ago

Not sure if anyone from the deno team is monitoring this forum, but I was trying to stand up a dev-base snapshot and pretty quickly ran into a wall. Is it not currently possible to create a bootable volume from the CLI? https://docs.deno.com/sandbox/volumes/#creating-a-snapshot has an example for the js API, but the CLI equivalent isn't specifying --from and the latest verson of the deno CLI installed fresh from deno.land has no --from option. Is the CLI behind, here? Or is the argument provided some other way?

Deno Sandbox 6 months ago

See also Sprites (https://news.ycombinator.com/item?id=46557825) which I've been using and really enjoying. There are some key architecture differences between the two, but very similar surface area. It'll be interesting to see if ephemeral + snapshots can be as convenient as stateful with cloning/forking (which hasn't actually dropped yet, although the fly team say it's coming).

Will give these a try. These are exciting times, it's never been a better time to build side projects :)

Eat Real Food 7 months ago

Replying to my own comment because I've had some more time to look through the scientific foundation document. In particular, this was an illuminating section (and maybe hinting at where the 'war on protein' language comes from)

The DGAs recommend a variety of animal source protein foods (ASPFs) and plant source protein foods (PSPFs) to provide enough total protein to satisfy the minimum requirements set at the Recommended Dietary Allowance (RDA) of 0.8 g/kg body weight for adults and to ensure the dietary patterns meet most nutrient needs [3, 4]. However, over the past 20 years, an extensive body of research has underscored the unique and diverse metabolic roles of protein, and now there is compelling evidence that consuming additional foods that provide protein at quantities above the RDA may be a key dietary strategy to combat obesity in the U.S (while staying within calorie limits by reducing nutrient-poor carbohydrate foods). Instead of incorporating this approach, the past iterations of the DGAs have eroded daily protein quantity by shifting protein recommendations to PSPFs, including beans, peas, and lentils, while reducing and/or de-emphasizing intakes of ASPFs, including meats, poultry, and eggs. The shift towards PSPFs was intended to reduce adiposity and risks of chronic diseases but was primarily informed by epidemiological evidence on The Scientific Foundation for the Dietary Guidelines for Americans, 2025–2030: Appendices | 350 dietary patterns, even in some cases when experimental evidence from randomized controlled trials (RCTs) was available to more specifically inform this recommendation. Another key aspect that DGA committees have inadequately considered are the nutrient consequences when shifting from ASPFs to PSPFs. ASPFs not only provide EAAs, they also provide a substantial amount of highly bioavailable essential micronutrients that are under-consumed. Encouraging Americans to move away from these foods may further compromise the nutrient inadequacies already impacting many in the U.S., especially our young people. Compounding this is the recent evidence highlighting the fallacies of using the unsubstantiated concept of protein ounce equivalents within food pattern (substitution) modeling, leading to recommended reductions in daily protein intakes and protein quality since ASPFs and PSPFs are not equivalent in terms of total protein or EAA density. Given that 1) there is no Tolerable Upper Intake Level (UL) for dietary protein established by the Dietary Reference Intakes (DRIs) and 2) consuming high quality ASPFs above current recommendations has shown no negative health risks in high quality RCTs, it’s unclear as to why previous DGAs encouraged shifts in protein intake towards limiting high quality, nutrient dense ASPFs. It's essential to evaluate the evidence to establish a healthy range of protein intake and to substantiate whether or not limiting ASPFs is warranted and/or has unintended consequences. An alternative approach that may be more strongly supported by the totality of evidence is the replacement of refined grains with PSPFs like beans, peas, and lentils. Given their nutrient dense profile (e.g., excellent source of fiber, complex carbohydrates, & folate, etc.; good source of protein) nutrient dense PSPFs complement but do not replace the nutrients provided in ASPFs (i.e., excellent source of protein, vit B12, zinc, good source of heme iron, etc.). By including high quality, nutrient dense ASPFs as the primary source of protein, followed by nutrient dense PSPFs as a replacement for nutrient-poor refined grains, a higher-protein, lower-carbohydrate dietary pattern can be achieved which likely improves nutrient adequacy, weight management, and overall health. -- https://cdn.realfood.gov/Scientific%20Report%20Appendices.pd... Appendix 4.9

Eat Real Food 7 months ago

I do regret mentioning Broccoli because it seems to have become a bit of a distraction from my original point, which was that getting enough protein from a varied diet actually isn't that hard once you start to notice how much protein is in certain common veg. I'm not totally sure I understand where the mentality that all your protein has to come from a single source in isolation comes from, but suspect representations like this pyramid are at least partly to blame.

Agree that g/kcal isn't perfect but g/g has its own corner cases like water content skewing things badly (e.g. dried spirulina is 57% protein by weight but you'd never eat more than like a gram in a serving). I never meant to suggest that people should be eating broccoli _in place of_ turkey, only that by _de-emphasising_ the protein content of many vegetables in favor of animal proteins, the graphic encourages meal planning that must always contain an animal protein. More insidiously, in my experience at least, it blurs the line between the nutrition content of different animal proteins ("I have my veg I just need 'a protein' now") which leads to more consumption of red meat regardless of quality.

The graphic that I wish someone would make is the 'periodic table of macro nutrients' that positions foods along multiple dimensions at once but I don't know how you would actually do it in just two dimensions.

Eat Real Food 7 months ago

It's a good point, and maybe Broccoli isn't then as compelling as something like tofu, which contains nearly as much (and nearly as bio available) protein/calorie as lean steak.

I guess I'd challenge the 'no downsides' claim. Few people stick to super lean grass-fed cuts, and the picture on the site is even a ribeye steak :P

The protein density (g/kcal) of a ribeye steak is basically the same as tofu (I think like 14g/100kcal vs 11g/100kcal in tofu)

I know I'm moving the goal posts slightly (I admit I didn't know about bio availability, and see now that I have more to read up on e.g. Broccoli), but am learning as I discuss rather than arguing a fixed point.

Eat Real Food 7 months ago

I guess what I'm lamenting is the missed opportunity to highlight that many vegetables e.g. broccoli are an excellent protein source as well as other important nutrients. It gives you additional flexibility when meal planning. There's a common misconception (at least in my circles) that protein => animal protein which isn't always useful for planning a balanced meal.

Eat Real Food 7 months ago

How is it possible that beef, dairy, and chicken are front and center while Lentils, Tofu (or even just soy), Chickpeas, Nutritional Yeast, Broccoli, etc are all left off? Why do they arbitrarily split "protein" and "fruit/veg" given that most/all of the most protein dense foods are vegetables/legumes? Steak is a terrible source of protein (in terms of nutrient density). Immediately pretty suspicious.

This is such a bonkers line of thinking, I'm so intrigued. So a particular model will have an entire 'culture' only available or understandable to itself. Seems kind of lonely. Like some symbols might activate together for reasons that are totally incomprehensible to us, but make perfect sense to the model. I wonder if an approach like the one in https://www.anthropic.com/research/tracing-thoughts-language... could ever give us insight into any 'inside jokes' present in the model.

I hope that research into understanding LLM qualia eventually allow us to understand e.g. what it's like to [be a bat](https://en.wikipedia.org/wiki/What_Is_It_Like_to_Be_a_Bat%3F)

THANK YOU so much for this. I'd spend some time researching how to disable YouTube shorts only to come to the conclusion that I had to use a different client (I picked NewPipe, but faced frequent issues with playback and I ended up having to click out to YouTube 90% of the time anyway)

I've disabled YouTube history now and it's almost exactly what I'd hoped for. Shorts are disabled, no 'feed', no suggestions, just my subscriptions. I owe you a beer.

What Is Entropy? 1 year ago

I'm not in any way qualified to have a take here, but I have one anyway:

My understanding is that entropy is a way of quantifying how many different ways a thing could 'actually be' and yet still 'appear to be' how it is. So it is largely a result of an observer's limited ability to perceive / interrogate the 'true' nature of the system in question.

So for example you could observe that a single coin flip is heads, and entropy will help you quantify how many different ways that could have come to pass. e.g. is it a fair coin, a weighted coin, a coin with two head faces, etc. All these possibilities increase the entropy of the system. An arrangement _not_ counted towards the system's entropy is the arrangement where the coin has no heads face, only ever comes up tails, etc.

Related, my intuition about the observation that entropy tends to increase is that it's purely a result of more likely things happening more often on average.

Would be delighted if anyone wanted to correct either of these intuitions.

Not sure I'm going to get any traction here, but seeing as the 'support' button in the website is greyed out, not sure where else to post this. I got double-charged for my subscription, and I'm hoping you folks can help me get a refund on the extra charge. I was going through the subscription flow and got an error. The website allowed me to subscribe again so I did, assuming the first one hadn't gone through. I now have two charges on my card.

Can I ask how you're injecting dynamic content in served html files? My understanding was that lambda@edge functions could not modify the origin response body.

When you’re working with the HTTP response, Lambda@Edge does not expose the body that is returned by the origin server to the origin-response trigger. You can generate a static content body by setting it to the desired value, or remove the body inside the function by setting the value to be empty. If you don’t update the body field in your function, the original body returned by the origin server is returned back to viewer.

https://docs.aws.amazon.com/AmazonCloudFront/latest/Develope...

SVG Path Editor 6 years ago

Unbelievable. I just wrapped up my first svg-heavy project. Something like this would have been an invaluable learning tool. I ended up writing a lot of SVG by hand, and mostly through trial and error.

Looks great, though :P

I've read that dead / recovered overestimates since cases that end in death tend to close more quickly than cases that end with a recovery. Neither are great though and dead / cases underestimates since some of those cases might end in death as you say.

Bottom line is it's hard to get good estimates and we should let epidemiologists do their job.

The Light Phone 7 years ago

I kind of understand why you went with the veganism example, but it seems slightly bizarre that it's your first choice. I think it's fair to say that most vegans' decision to become vegan has nothing to do with being sanctimonious. Not a vegan, though.

Re: 'Flaw #6: We Still Need a Linter' (first example):

Could the 'primitive' hooks (useState, useEffect, etc) walk up `arguments.callee.caller.arguments.callee.caller...` grabbing function names until you hit a React function? Then use the names to create a 'composed' key automatically? It still doesn't solve the problem of a function using the same hook twice in one function, but it might solve the problem of collision across custom hooks.

Example:

    function useCount() {
      const [count, setState] = useState(0)
      return { count, increment: () => setState(count + 1)};
    }

    function useCountPlusOne() {
      const {count: baseCount, increment} = useCount()
      return {count: baseCount + 1, increment}
    }

    function MyHookComponent() {
      const { count, increment } = useCountPlusOne()
      return ...
    }

Would give you a key of `useState(useCount(useCountPlusOne(MyHookComponent)))` without the end user having to futz around composing the key manually. At this point you could probably even forego the 'use*' convention

It's still pretty magical, but the magic seems more abstracted. In general I've really liked hooks, and I'm willing to put up with the wackiness (although testing them with enzyme is a big PITA right now).

Thanks for the article :)