HNHacker News
TopNewBestAskShowJobs

jffry

3,559 karma · joined June 26, 2013

Are you a bot scraping this profile hoping for an email address? Please direct your spam to abuse@ic3.gov

If you are a human and you wish to contact me, the sha1 hash of my email address is 9aae0f6d01421dde3d5085fa1a24adff6c9e344f. I look forward to hearing from you soon.

Hi'); DROP TABLE emails;--

<script>alert('Hi!')</script>

submissionscomments
jffry··on BCI lets completely “locked-in” man communicate
There are two videos linked from the "supplementary information" section of the paper: https://www.nature.com/articles/s41467-022-28859-8#Sec14

In particular, the second video shows sessions where he is spelling out words with the audio-interactive system

jffry··on Ask HN: What gives Cloudflare the right to takedown apps revealing site real IP?
With Cloudflare's tunnels, there's no longer even a need to allow direct connections from the outside world.

In my own testing it wasn't too terrible to setup firewall rules and mutual TLS-based authentication of origin pulls, but it is certainly something where you have to do everything right to be as secure as you think you are. Versus just closing off inbound connections entirely and running cloudflared

jffry··on Ask HN: What gives Cloudflare the right to takedown apps revealing site real IP?
I have seen the screen where Cloudflare cannot contact the origin and it absolutely does not include the IP address or other details about the origin.

You might be thinking of the "Ray ID" that Cloudflare displays on that page, which is just a random request ID that has nothing to do with the origin server.

jffry··on Ask HN: What gives Cloudflare the right to takedown apps revealing site real IP?
Authenticated origin pulls are mutually exclusive with their tunnel. If you configure your firewall so that only the cloudflared tunnel process can access your origin server, then you can already be assured the request is coming from Cloudflare.
jffry··on Warpgate: Smart SSH bastion that works with any SSH client
I think this is fulfilling a slightly different niche - further down in the README it talks specifically about opening a separate connection to the host and recording the session for audit purposes.

Which offers a little more than a simple SSH bastion would, unless there are features like this in OpenSSH I'm not aware of.

jffry··on Dropbox Backup
If it was then it could be a closer imitation. Let me try:

"For a Linux user, you can already build such a system yourself quite trivially by getting a Backblaze B2 account, and scheduling a cron job to backup to it via RClone. From Windows or Mac, this Backblaze account could be access through built-in browser software"

jffry··on Podman Desktop Companion GUI – Parity on All Major Operating Systems
Docker Desktop is now only free "for small businesses (fewer than 250 employees AND less than $10 million in annual revenue), personal use, education, and non-commercial open source projects." per https://www.docker.com/products/docker-desktop/
jffry··on I Avoid Async/Await
Since this article is specifically about Javascript: I think the implementation of async/await in the language is heavily constrained by a desire for backwards compatibility.

After all, async/await is ultimately promises all the way down, so you can happily write code and let a compiler turn it into ES5 that runs anywhere.

If instead JS allowed you to shunt arbitrary function calls off into their own threads, then you would need bigger changes to the engines to support that, and you couldn't back-port that to vanilla javascript.

jffry··on I Avoid Async/Await
> How would you handle two asynchronous saves which can happen in parallel without using a Promise.all?

This question doesn't make sense. Async/await is just a nicer syntax for interacting with promises. So my answer to your "gotcha" question is just:

  await Promise.all([..., ...])
There's nothing impure going on here. The majority of the time, async/await can make it much easier to see a code's control flow by getting rid of most of the Promise related cruft and callbacks.

I would call Promise.all a benefit here, as it makes it stand out where I'm doing something in parallel.

jffry··on Ask HN: Have you created programs for only your personal use?
Here you go! Happy to answer any other questions not answered in my other two comments:

- https://news.ycombinator.com/item?id=31026875

- https://news.ycombinator.com/item?id=31026979

Fortunately this was fairly easy to implement since Hue bridges provide a locally-accessible actually-documented REST API for me to use!

jffry··on Ask HN: Have you created programs for only your personal use?
Hue bulbs, the kind that talk to a central bridge over, I believe, ZigBee.

The bridge just hooks up over ethernet and provides a locally accessible no-nonsense REST api that is surprisingly well documented (sadly requires logging in with a free account: https://developers.meethue.com/develop/hue-api/ ).

Authentication is simple. Press the big button on the bridge, hit an API endpoint within 30 seconds, and you get an auth token.

The only other requests I needed were a GET to list the id and status of all bulbs, and a POST per bulb that is on to change its color temperature (you cannot set color temp of a bulb that is off).

jffry··on Ask HN: Have you created programs for only your personal use?
It's not open source, but the good news is it's relatively simple. My bulbs are Hue bulbs which use their bridge/hub, which just plugs into ethernet and provides a REST API.

The basic loop, run once per minute is:

- Make one API call which returns the id/on/off/brightness of every bulb

- For each bulb that is on, set its color temperature (this has to be one API call per bulb because there is no way to bulk update a list of bulbs. Bulbs can be put into at most one "room" and you can bulk set a whole room but not a subset of bulbs in that room)

As far as scheduling color temperature goes - I just define a few keyframes based on minutes since midnight local time, and then linearly interpolate to get the color temp. Over 24 hours the steps are so small that the change is basically imperceptible.

jffry··on Ask HN: Have you created programs for only your personal use?
Most of my light bulbs are color-temperature-adjustable. So I wrote a small program which varies the color temperature throughout the day and night.

I started by matching it to the solar elevation, but ultimately I like it more just on a fixed schedule. I've also programmed it to make a more dramatic warm shift near bedtime, and to fade up a bedroom light when it's time to wake up.

Due to the inevitability of scope creep this system also now tracks the charging status and position of my robot vacuum, and I'm working to expand it to collect the 15-minute-interval usage data from my electric provider's website.

jffry··on Ask HN: Have you created programs for only your personal use?
Even if the decision was merely day-of-week based, that doesn't buy the key characteristic the author values (I assume): the kids will accept the Algorithm's ruling
jffry··on -h –Help -help Help –? –?
rlwrap [1] may be able to help

[1] https://github.com/hanslub42/rlwrap

jffry··on Ed Sheeran on creative cost of lawsuit: ‘Now I just film everything’
Per Wikipedia [1], legal proceedings started in 2018, and the actual court hearing stage happened over the past month. It's not clear how much of that time was waiting for whatever reason, versus ongoing back-and-forth motions and such.

[1] https://en.wikipedia.org/wiki/Shape_of_You#Copyright_trial

jffry··on AltWinDirStat
The homepage and download page haven't been updated, but I can confirm that Disk Inventory X works just fine for me in MacOS Monterey (12.3, Intel machine)
jffry··on Ubiquiti vs. Krebs
> Who says that I can not spread lies about companies?

Many countries have laws specifically outlawing this behavior.

If you're curious specifically about the intersection of those laws and the rights afforded by the First Amendment in the United States, read https://en.wikipedia.org/wiki/Defamation_and_the_First_Amend...

jffry··on Waymo begins driverless rides in San Francisco
> added operational cost of running a self driving car - is it worth it to average consumer?

Early high-cost self-driving cars largely won't be owned by individual consumers where the cars spend the majority of their time parked. They will be owned by companies that sell access to them as taxis by the minute/mile and can justify the cost by minimizing downtime.

jffry··on I have been terminated from Zoom for refusing to remove the following tweets
Here is the mirror that got archived by the Wayback Machine: https://web.archive.org/web/20220329014412/https://twitter.c...
jffry··on Debian decides to allow secret votes
The US is not homogenous in the technology used to vote - running elections is left to the states, and different states use different polling technologies.

The systems we have for voting in Washington DC seem to be a best-of-both-worlds approach. There are touchscreen kiosks that you use to make your choices, then the kiosk prints out a properly marked paper ballot that it asks you to verify. Then you take your ballot over to the normal scanning machines. You can also request an unmarked ballot and fill it by hand if you prefer.

The kiosks can provide a wide range of assistive tech (larger fonts, instructions in a variety of languages, and headphone jack for audio prompts). They also help ensure you do not miss a question - you must explicitly choose "skip" - and they help ensure you select between 0 and N choices in choose-N questions. Also they print a clearly-marked ballot which helps avoid ambiguities like if somebody partially fills a circle by hand.

And best of all, the end product is still a physical, auditable piece of paper.

jffry··on USPS Service Standards Maps
Here's a neat bit of zip code esoterica: domestic US mail can be sent to US embassies abroad via special addresses in Washington DC. [1]

Each embassy has a unique nonexistent house number and street name within the 20521 zip code.[2] For example, the embassy in Paris is "9200 Paris Pl, Washington, DC 20521-9200".

Oddly, the only duplicated number in the list is "3180 Grenada Pl" and "3180 St George’s Pl"; St George's is the capital of Grenada.

[1] https://en.wikipedia.org/wiki/ZIP_Code#Scope_and_internation...

[2] https://www.state.gov/official-addresses/

jffry··on Ask HN: Uptick in spam based on GitHub activity
If you go to https://github.com/settings/emails and turn on "Keep my email addresses private", there is an additional setting called "Block command line pushes that expose my email":

"When you push to GitHub, we’ll check the most recent commit. If the author email on that commit is a private email on your GitHub account, we will block the push and warn you about exposing your private email."

jffry··on Ask HN: Who operates at scale without containers?
> Containers only give reproducible deployments, not builds

I think that means containers alone are insufficient for creating reproducible builds, not that containers make reproducible builds impossible.

jffry··on Starring your repo does not give you permission to spam me
This is absolutely spam. Sending not just one unsolicited message but a followup nagging you for not replying is absolutely spammy behavior.
jffry··on Vanced Discontinuation
My take is that Google wanted Vanced dead. On top of trademark problems, if the app was a modified official client then copyright is also at issue. And there's always the CFAA hammer looming.

It wouldn't cost much, compared to litigation, for Google to send them a letter outlining these issues. It's possible they made Vanced an offer they couldn't refuse (i.e., shut down now and avoid litigation)

jffry··on Josh Wardle created Wordle as part of an ongoing quest to design online spaces
Aha, that makes perfect sense, thanks!
jffry··on Josh Wardle created Wordle as part of an ongoing quest to design online spaces
Do you know if they were also removed from the solutions list? My only guess is it was an internal communications problem, and words removed from the solutions wordlist got removed in the guesses wordlist too.
jffry··on Josh Wardle created Wordle as part of an ongoing quest to design online spaces
My guess is that they deemed it a little bit too obscure, but I don't know that and can't imagine the process used and there are probably plenty of words in the list to point at and quibble over.

One of the things about Wordle is that it can give you a good shot at a feeling of success. Having something that feels like an "obscure" word which causes you to fail, lessens that positive feeling that could keep players returning every day.

jffry··on Google Analytics 4
This seems really primed to get people to ask "if we are rebuilding it anyways why not consider other analytics servies"

I imagine you'll hear a lot of that in the near future

← PreviousPage 10 of 31Next →