HNHacker News
TopNewBestAskShowJobs

whs

229 karma · joined March 13, 2018

[ my public key: https://keybase.io/whs; my proof: https://keybase.io/whs/sigs/XsIzvhNTTXrZgjL36BBv_SxD8KYmsGihbLIaFJ5WAB0 ] openpgp4fpr:114f08a7e2081aca01ec7738461ccb345ad1e4a5
submissionscomments
whs··on Nearly 90% of Windows Games Now Run on Linux
Some anticheats like EAC, GameGuard, XingCode do have Linux support that the game has to opt-in. I believe it is not kernel-based and is not Linux-native. Many non-competitive games do allow them.

At least I know that Helldivers 2 (GameGuard), DJMax Respect V (XingCode), Fantasy Life I (EAC) do works on Linux.

I wish that if they're happy with non kernel mode anti cheat on Linux, just do the same in Windows... Or just disable them if I don't use public matchmaking

whs··on I switched from Htmx to Datastar
Try the EC2 creation page. There are tabs for advanced options, widgets like images selection that you can choose from AWS-managed, Community, your own AMI, etc. And then the next page is confirmation of similar widget which you can go back and edit. I'd imagine that if you render it in backend first and one of the tabs has error your backend form library has to know how to rerender all the widgets that you already implement in JavaScript once. If the page is done in SPA the backend just send the data back and the existing frontend widget just have to rehydrate itself.
whs··on I switched from Htmx to Datastar
I think Datastar back when I was learning web programming and the dawn of AJAX would be Xajax [1]. I didn't even learn JavaScript back then because Xajax would generate a JS shim that you could call to trigger server side functions, and the function replace page fragments with new, server-generated content.

[1] https://github.com/Xajax/Xajax

While htmx reminds me of Adobe Spry Data [2] enough that I did a research into htmx and realize that Spry Data's equivalent is a htmx plugin and htmx itself is more similar to Basecamp's Hotwire. I assume there should be a late 2000 era AJAX library that do something similar to htmx, but I didn't use one as jQuery is easy enough anyway.

[2] https://opensource.adobe.com/Spry/articles/spry_primer/index...

Anyway as other commenters has said, the idea of htmx is basically for some common use cases that you used jQuery, you might as well use no JavaScript at all to achieve the same tasks. But that is not possible today, so think of htmx as a polyfill for future HTML features.

Personally I still believe in progressive enhancements (a website should work 100% without JavaScript, but you'll lose all the syntactic sugar - for example Hashcash-style proof of work captcha may just give you the inputs and you'll have to do the exact same proof of work manually then submit the form), but I've yet to see any library that is able to offer that with complex interface, without code duplication at all. (Maybe ASP.NET can do that but I don't like the somewhat commercialized .NET ecosystem)

The UI I think would require React is a wizard-style form with clientside rendered widgets (eg. tabs). If you can't download a library to implement that, it is a lot of work to implement it on backend especially in modern websites where your session is now JWT instead of $_SESSION that requires a shared global session storage engine. I'd imagine that if you don't use React when the user go back to the tabbed page you'd need to either implement tab switching code on the backend side as well, or cheat and emit a JS code to switch the active tab to whatever the backend wants.

whs··on Flightcontrol: A PaaS that deploys to your AWS account
We acquired a company that use EB and they have no dedicated DevOps engineer. It was bad because every deploy is a full VM boot which takes a long time and you can't do things you can do with Argo Rollouts. We migrated them to EKS.

I casually asked our account manager "Do you know any local customer with EB success story?" Their answer was "Do you want to be one?"

whs··on Baldur's Gate 3 Steam Deck – Native Version
It's documented here https://store.steampowered.com/oldnews/35534?l=

I don't think I ever found more documents on this feature. I assume it might need lots of users with matching result to ensure that bad actor can't upload malicious shader.

whs··on Baldur's Gate 3 Steam Deck – Native Version
I had that with MHW and I nailed it down to shader (fossilize-replay - https://github.com/ValveSoftware/Fossilize).

From my guess, Steam support Vulkan shader pre-compilation so that you don't have to wait in game (like the infamous 10 min Monster Hunter Wilds startup delay). They also seems to also be able to download the compilation cache from Steam if someone already have done the process on the same GPU + driver version. Since fewer Windows games use Vulkan this feature is often not used, but on Linux most games will run on Vulkan (esp. Proton games with dxvk) you may experience the process more often.

whs··on Lit: a library for building fast, lightweight web components
Does Lit have a good component library? Like, a complete web template (eg. Bootstrap/Ant), datepicker, color picker, virtual scroll, data tables, typeahead, tab, etc.

I shipped a project with Lit and I liked it, but I didn't like that I'd need to know the complete project scope up front that I could write everything from the ground up. I know I could use React component for some of the harder stuff but at that point might as well use React and avoid bundling two systems

whs··on Show HN: A private, flat monthly subscription for open-source LLMs
I signed up, feels like this is something that should've existed long ago.

Your privacy policy isn't good for a privacy focused provider though. You shouldn't have the rights to use my personal information. The use of Google Tag Manager also not inspire confidence, especially in LLM pages where you might "accidentally" install a user monitoring script and the prompts get logged. I'd suggest looking at how Kagi do the marketing to privacy-conscious customers.

whs··on Uncomfortable Questions About Android Developer Verification
It's not an option on most Thai banks due to Bank of Thailand's regulations.

They requires that for any transaction past 50k THB per day (not per transaction) you'll need to provide face recognition. This means banks need to develop its internet banking solution past Web 1.0 era. From what I know (and I didn't do much research) most banks simply just shutdown internet banking instead of complying with that, only business banking get a separate website. My bank they simply merge the personal banking and corporate banking into a new system, but you still need to approve the transaction on a push notification (and perform face recognition).

It doesn't help that I believe many online casinos and scammers are scraping internet banking and even mobile banking APIs. There was a bank that apparently you could find PHP classes on GitHub that emulate their mobile app, and when that was in the news people were saying that the bank doesn't have proper security even though to use the class you'd need to provide exact same information in the app itself. Scammers used those code to move money from mules to mules, obfuscating the money's movement. The banks doesn't talk to each other either, so once the money goes through a few banks the chance you could trace it is almost none.

There was a court case that the court have ruled that if you were to get scammed to install apps on your phone that scam you for money, the bank is at fault as they have improper security. So they're heavily incentivize to protect users from themselves.

As for facial recognition, disabled people sent letters to Bank of Thailand, as legally blind people are not compatible with the liveness checks, the bank apps do block screen captures and refuse to work when any accessibility services is on and all BoT says about that is "we already told banks to do something" and the disabled people just send a second open letter this week, as many banks did nothing, some banks probably have a backend account flag to bypass the checks but didn't train the branch agents to perform such changes on the account.

Also Thailand has move into cashless - most local people don't use cash now except for small mom & pop shops that are doing dodging tax. Of course credit card is not accepted (or with minimum) - Thai business owners doesn't like fee no matter how small it is.

whs··on Uncomfortable Questions About Android Developer Verification
I used to run Shizuku for my phone to run Hail (an app suspension tool). Now that my credit card bank start checking for USB Debugging I stopped using the app (and now my 3DS OTP has to be over SMS). I believe there's only two banks left in Thailand that do not check for one and it is just a matter of time, because any time these banks could have hired any of those "security" people who will ask why don't we block that.

So I moved to Dhizuku. It's a bit hard to setup, but once I'm done it's felt like untethered jailbreak - I don't have to complicated dance to start Shizuku now. Dhizuku basically make your phone a company phone, except it report to you. To setup a "managed main profile" you'd need to remove all accounts visible in Android account system and type a long ADB command so I don't think it can be maliciously done.

I suppose this will be how we'll use F-Droid in the next year for enthusiasts.

whs··on We put a coding agent in a while loop
I never read your work though (and still haven't since it's paywalled), I just discovered today that we independently discovered the same thing.
whs··on We put a coding agent in a while loop
I wrote an MCP based on that technique - https://github.com/whs/mcp-chinesewall

Basically to avoid the ambiguity of training LLM from unlicensed code, I use it to generate description of the code to another LLM trained from permissively licensed code. (There aren't any usable public domain models I've found)

I use it in real world and it seems that the codegen model work 10-20% of the time (the description is not detailed enough - which is good for "clean room" but a base model couldn't follow that). All models can review the code, retry and write its own implementation based on the codegen result though.

whs··on Ask HN: Do you think differently about working on open source these days?
I kinda want to quit making my code publicly available. It is my believe that the model may output license contaminated code and any license I put into my code will not be accurate, so my policy is I don't use AI coding on my publicly available open source code. However, this also means that I'm working for free fueling the AI industry.

However, it is quite fun to remove the boring part in programming with AI, so any hobby code I write I won't be making them public.

Currently I'm working on a way to use models trained from MIT-licensed code (eg. Comma) by using normal commercial model to supervise it. I believe this make the output code only be tainted with permissive code, and so I can now slowly use AI to write open source code again.

whs··on Ollama's new app
Seems that Google intend it to be that way - https://ai.google.dev/gemma/docs/capabilities/function-calli... . I suppose they are saying that the model is good enough that if you put the tool call format in prompt it should be able to handle any formats.

I use PetrosStav/gemma3-tools and it seems that it only works half of the time - the rest the model call the tool but it doesn't get properly parsed by Ollama.

whs··on Claude Code Unleashed
I was reading Doe 1 v. GitHub for my paper. The case involves open source developers suing Github Copilot which were trained on, and generating open source code including code with MIT and AGPL license.

So far, the judge believe that training models on open source code is not a license violation as the code is public for anyone to read, but by "distribution or redistribution" (I assume, of the model's outputs?) it is still up for the court's decision whether that violate the terms of the license, among other laws.

The case is currently moved to Ninth Circuit without a decision in the district court, as there are other similar cases (such as Authors Guild's) and they wanted that the courts would offer a consistent rules. I believe one of the big delay in the case is in damages, which I think the plaintiff tried to ask for details of Microsoft's valuation of GitHub when it was acquired, as GitHub's biggest asset is the Git repositories and may provide a monetary value of how much each project is worth. Microsoft is trying to stall and not reveal this.

whs··on bootc-image-builder: Build your entire OS from a Containerfile
I was going to try this to perhaps use it in production. Turns out the RHEL clones like Alma or Rocky doesn't have this thing in production-ready grade. All options you have now are owned by Red Hat themselves.
whs··on Falsehoods programmers believe about aviation
Gender, Father and order of birth

Like Mary, first daughter of Henry VIII

whs··on The cryptography behind passkeys
My friend asked similar question yesterday, and while I don't know the answer I wish it don't

Most large websites are hosted behind a CDN or a load balancer, which terminate the TLS session and is a MITM between the customer and the actual backend server. The problem is similar to TLS Client Certificate - you can't forward these to the backend now, and the load balancer is not smart enough to validate the data so it is impossible to use it.

In recent years (~5 years), AWS ALB and competitors gained the client certificate support now which pass the certificate information to your application in HTTP headers - instead of a standardized way of reading client certificate the servers has to read from non-standard headers.

If passkeys is also passed as HTTP payload, I don't see believe that the LB would read the payload anytime soon. It might become a selling feature for IDP-as-a-service like Auth0 that you can't do it with IaaS.

whs··on AWS Built a Security Tool. It Introduced a Security Risk
To add on this point, in my interaction with AWS employees it seems that

- The account manager and the enterprise support TAM can view a list of all resources on the account, including metadata like resource name, instance type and cost explorer tags. Enterprise support routinely present a monthly cost review with us, so it is clear that they can always access this information without our explicit consent. They do not have the ability to view detailed internal information about it though, such as internal logs.

- When opening support case, the ticketing system ask for resource ARN which may contains the name. It seems that the support team can view some data about that object including monitoring data and internal logs, but potentially accessing "customer data" (such as ssh-ing into an RDS instance) requires explicit, one off consent.

- I never opened any issues about IAM policy, so I don't know if they see IAM role policy document

- It seems that the account ID and account name is also often used by both AWS' sales side and reseller's side. I think I read somewhere that it is possible to retrieve the AWS account ID if you know S3 bucket or something, and when exchanging data with external partner via AWS (eg. S3, VPC peering) you're required to exchange account ID to the partner.

whs··on Reading Zanzibar
A few years ago I tried implementing Zanzibar for my company, but I needed one change - I don't want to store permissions in Zanzibar but instead it should act as an API gateway that lookup permissions stored in the services. Like if user act on an order, the user service and order service should be contacted.

Turns out it is pretty much required for a distributed system. A common question in microservice architecture is whether to validate permissions only at the API gateway layer, or at every points of use. If you want to validate it everywhere, what happen when you're running async job and the user get revoked. In Zanzibar you attach the cookie as the user's context and Zanzibar will always return the same answer. (This is not meant for cronjob where user set it once and it repeat daily, but rather for quick, one off background jobs like generating reports to users' email) If you remove the internal store, the application's API must provide point-in-time query, which I never see one application does that let alone a microservice environment.

Another problem is cache invalidation - when permission get added or removed, users want that to reflect quickly. I can't remember how the paper handle this, but in any case since the permissions are stored in Zanzibar, every changes goes through Zanzibar. If you remove the internal data store, you lose the change notification.

The pseudo-Zanzibar lives in production today, but I feel like it is one of the mistake in my career.

whs··on Privacy folks – what's your take on using LLMs at work?
I use public LLM the same way I'd use a search engine - to search public information only and never proprietary data. With Gemini in Google Workspace that can be used for proprietary information, but of course only if Gemini suits the tasks.

As for coding model my view is they're directly violating my copyright, especially that I checked some "open training data" corpus that it does confirm that my code is part of the corpus without honoring the license.

whs··on TLS certificate lifetimes will officially reduce to 47 days
Do they offer any long term commitment for the API though. I remembered that they were blocking old cert manager clients that were hammering their server. You can't automate that (as it could be unsafe, like Solarwinds) and they didn't give one year window to do it manually either.
whs··on TLS certificate lifetimes will officially reduce to 47 days
Agree. My company was cloud first, and when we built the new HQ buying Cisco gear and VMware (as they're the only stack several implementers are offering) it felt like we were sending the company 15 years backwards
whs··on Everyone knows all the apps on your phone
I'm working on implementing this for the company, and the annoying limitations on iOS is that you can't clone apps. If you want Gmail (as an example) as managed app, you can't have another Gmail as unmanaged app. While the company can't see inside the Gmail managed app (without the app itself explicitly providing that feature), the company can remove Gmail (and any local data inside the app) at any time.

Fun fact from the MDM implementation - the most private way (at least to the company policies) to have a company-connected device is to buy a separate phone and install company's MDM on it. On company provided devices, the company may locate company's assets at any time but doing so on a personal device is a privacy breach.

whs··on Everyone knows all the apps on your phone
If it's a security issue fix, they should release it in one of the monthly security patch.

I also think that private space do not fix the underlying issue. If you have four apps and you don't want them to know about each other you can put one of them in main profile, work profile, app locker and you run out of profile for the last one. The way app locker work doesn't scale to tens of sandbox.

whs··on Hyperlight WASM: Fast, secure, and OS-free
From what I understand Hyperlight's boot process is more similar to a microcontroller than a PC (although it use your CPU architecture) - the VM directly boot into your code. Unlike Firecracker, Hyperlight VM doesn't have any hardware while Firecracker do have VirtIO devices, serial console and keyboard so that traditional operating systems can be adapted to Firecracker. Host-Guest communication is done with shared memory.
whs··on Two new PebbleOS watches
I ordered my Pebble Time during February 2015 Kickstarter for $169. Today the Core Time 2 is $225 which is the exact same price adjusted for inflation.

The DHL shipping though I remembered it was $25 and it is still $25 today

whs··on OpenAPK – open-source Apps for Android, updated weekly
Shizuku's license disallow 3rd party recompilation of the APK, fork or not. Presumably this is done to provide an option to legally takedown fake Shizuku which could contains backdoor. (The original APK is redistributable) Hence Shizuku is not on F-Droid.

F-Droid, however, allow the developer's binary to be reproduced if they have tested that the APK is reproducible when replacing the APK's signature with the original APK.

whs··on Fair Pricing
Kagi used to have limits on all plans, and I feel like associating cost to typos is a bad experience that you'd never have on ads-supported engines. Even now on starter plan (300/month) a mistyped query would cost you $0.0166 each.

Now I use the unlimited plan and so I search first, spellcheck later. Or sometimes it corrects it for me.

whs··on Google open-sources the Pebble OS
I wear a Garmin and I still miss my Pebble Time that died to swelling battery.

- Always on. Garmin has option to do that as well but it reduce the battery life to like 3 days. In outdoor my Pebble Time is very bright with zero backlight.

- 5 days battery. I went on a trip to Japan without its proprietary charger, by the time I board my flight back it was on power save mode and it died the moment the plane landed. Garmin could do this if you set it to power saving mode, but the Pebble is in standard mode. One could argue that the Garmin do have more stuff like health monitoring that Pebble didn't.

- Cheap and no frills. I want a second screen for my phone, not a health tracker. Originally my Pebble Time shipped with zero fitness features, and it later added a step counter once it's clear that the market direction go that way.

- Garmin is quite thick, Pebble Time is thinner

- The UI is simple - press up for past event, down for future event (calendar). Press the middle button for menu. Hold are configurable. Garmin has 4 main menus which are very confusing (fitness menu, shortcut menu, apps menu, system menu).

- Lots of free apps and watch faces which I actually used (like a music app that show album art). I don't see any apps I would want to use on the Garmin, and they're mostly paid. The "hide in a hole while ceiling crush the map" game on Pebble was really well done. Now my Garmin use the simple time in Verdana watch face because I cba to find a decent one.

- Even with low framerates, Pebble managed to deliver cute little animations. Replying to message show a flying paper plane, screen transitions have suitable animations (not generic ones like Android), and the best one is muting an apps show a Ostrich putting its head under the ground. The animation also hides how slow the hardware actually is, with later OS versions stalling over a second or two after a second long animation.

- I think the phone app UI is not as good as say, Apple Watch, but it focus on apps and the store without the fitness features. Garmin's app is entirely about fitness and they hide smartwatch stuff in a menu plus another separate Connect IQ app.

Overall the PebbleOS feel like a really solid and polished product than any smartwatch today. It do fewer things than most smartwatches, but that's all I care about and everything it does is very polished.

← PreviousPage 2 of 4Next →