HNHacker News
TopNewBestAskShowJobs

foob

4,793 karma · joined February 14, 2011

I'm the CAIO at TenantBase (https://tenantbase.com) and a co-founder of Intoli (https://intoli.com). Feel free to get in touch at evan@sangaline.com if you would like to chat.

my public key: https://keybase.io/sangaline my proof: https://keybase.io/sangaline/sigs/uKMqGQ_auE6z2qTdrkpZihnoA-DcJ4BeHb35KLA1KZI

submissionscomments
foob··on How to Prepare Now for the Complete End of the World
I think this is a great explanation. The US has a much more recent history of frontiermanship and homesteading than Europe does, and that continues to permeate our culture in many ways. When I was a kid, books like My Side of the Mountain and Island of the Blue Dolphins were required reading. Apocalyptic television shows like Jericho, Lost, The 100, The Last Man, and Revolution are still very popular. The echoes of the 1800s live on in books, television shows, and movies.
foob··on A proactive approach to e-scooter safety
the danger from a cyclist running a red light is mostly to the cyclist

It's also dangerous to pedestrians. I see cyclists run red lights with pedestrians in the crosswalk almost every day, and many of them seem to assume that people will stop walking and yield to them. If somebody doesn't notice the cyclist then this can easily lead to a collision.

foob··on If this project is dead, just tell us
I think that's the default for most high exposure projects. Unless, of course, both projects have the same author, and that author's primary concern is increasing their own exposure.
foob··on Fries of the Future
Interesting, I had always assumed that they made the switch to be more vegetarian friendly, but it actually was because of the "fat scare." I googled around to learn more about it, and found an article called Why McDonald's French Fries Used to Taste Better [1] that's worth a read.

[1] - https://blog.cheapism.com/why-mcdonalds-fries-used-to-be-bet...

foob··on Show HN: Testing HN titles against a neural network
Very cool. I had the same idea a couple of years back and implemented a very similar interactive tool [1]. If you find the topic interesting, then you might also enjoy the analysis explained in that blog post.

- [1] - https://intoli.com/blog/hacker-news-title-tool/

foob··on Detecting Chrome headless, the game goes on
I'm the other half of the cat and mouse game that Antoine is referring to, and I just wrote another rebuttal that people here might find interesting [1]. It goes into a little more detail about what his test site is actually doing, and also walks through the process of writing a Puppeteer script to bypass the tests.

- [1] -https://www.tenantbase.com/tech/blog/cat-and-mouse/

foob··on Waymo gets green light in California to pick up passengers in self-driving cars
Hasn't the rise of Uber and Lyft already turned it into a numbers game? I get drivers that I would consider below average all the time, and I don't have any control over which driver I get. Even when you're the one driving, you have no control over whether the car in front of you is being driven by a good driver or somebody texting who might cause an accident that endangers you. I agree that it needs to be accepted on a societal level, but if you can definitively say "self driving cars are safer than the average Uber driver," then I don't think it will be that hard of a sell. That's especially true if it results in less expensive rides in addition to lower crash rates.
foob··on Show HN: Sanic – A Comprehensive CLI for Kubernetes
Do you have any concerns about giving it the same name as the web framework? Sanic is one of the more popular Python web frameworks with over 12k stars on GitHub. I would guess that a significant portion of your potential users already associate the name with that established project. I'm not trying to police the name or anything, but it seems likely to cause confusion.
foob··on Ask HN: What’s the legality of web scraping?
They look at them, but they don't follow them strictly [1]. They make judgement calls on what they should do rather than treating robots.txt files as a legal contract.

[1] - https://blog.archive.org/2017/04/17/robots-txt-meant-for-sea...

foob··on Ask HN: What’s the legality of web scraping?
This is a polite thing to do, but I don't think that there is any legal precedence for it being an actual requirement. Notably, both Apple and The Wayback Machine publicly disregard robots.txt files [1]. I would be very curious to read any court ruling that determined a robots.txt file needs to be respected.

[1] - https://intoli.com/blog/analyzing-one-million-robots-txt-fil...

foob··on I draw figures for my mathematical lecture notes using Inkscape
This might come off as pedantic, but LyX is explicitly designed to be What You See Is What You Mean (WYSIWYM) rather than What You See Is What You Get (WYSIWYG). It gives you the gist of how things will end up without attempting to actually represent the final LaTeX output while you edit. It's an incredible piece of software, and I strongly prefer it over raw LaTeX despite the fact that I learned LaTeX first.
foob··on Why Vi Rocks
I think this says more about those developers than it does about Vim. In my experience, people who are highly effective at programming in Vim typically have it configured in such a way that it offers language-specific functionality comparable to any IDE. You don't get that out of the box (unless you use a Vim distro), but you are able to personalize it to your workflow more exactly than you can with an IDE. A junior developer probably isn't going to be more effective in Vim than an IDE, but a very senior developer easily could be. And somebody who is committing code with lots of obvious errors is almost by definition not a senior developer in my book, regardless of whether they're programming in nano, Vim, or an IDE.
foob··on Why Vi Rocks
Have they fixed the issues with where the cursor ends up after certain operations? It's been a couple of years since I've used it, so I can't give an explicit example, but there were multiple common operations where the cursor would end up in a different location afterwards than it does in vim. This was really difficult for me because I still used vim a lot for other things, and it felt like it was actively eroding my muscle memory to use two conflicting implementations.
foob··on Bird CEO on scooter startup copycats, unit economics, safety and seasonality
> Who cares if it's illegal?

The pedestrians that are endangered by relatively high speed motorized vehicles riding on sidewalks care. It's totally reasonable for you to not want to ride a scooter on the street, but that doesn't entitle you to break the law and make sidewalks less safe for others.

foob··on Google proposes changes to Chromium which would disable uBlock Origin
Yikes! I'm one of the maintainers of the Remote Browser open source project [1]. It's a cross-browser compatible automation framework which heavily leverages the power of vanilla JavaScript and the Web Extensions API to offer features comparable to those of Selenium (without the legacy cruft). Removing the ability for extensions to interact with arbitrary pages would effectively break Remote Browser's compatibility with Chromium/Chrome overnight. I have a feeling that there are a staggering number of interesting extensions that will break due to the various V3 manifest changes. Hopefully the outrage over uBlock Origin will push Google to reevaluate this decision.

[1] - https://github.com/intoli/remote-browser/

foob··on GoDaddy injecting JavaScript into websites and how to stop it
That's quite specific. Do you know what the impetus for them to stop was?
foob··on Lime and Bird are growing rapidly
Yeah, I think this is a fair assessment. Companies like Citibike and Zipcar provide similar benefits, but they do so by isolating their pickups to designated areas where they presumably have approval to operate. These scooter companies use the sidewalk like they own it, and that's pretty obnoxious if you want to use a sidewalk for walking. The big complaint that most people have isn't that scooters are displacing driving, it's that they're using the sidewalks as free scooter storage and externalizing the cost of that to everyone else.
foob··on Why I'm Ditching Android
I recognize that I'm in the minority, but I want a terminal interface on my phone. I have my qualms with Android, but one of my favorite things about it is that I can drop into a terminal and have what is essentially a full Linux distro at my disposal. I often leave my main laptop at the office instead of lugging it around, and it's great being able to use a bluetooth keyboard with my phone to get real work done sometimes.

I use termux [1] which allows me to install whatever software I want with APT. I can use vim, ssh into servers, and mostly do whatever else I would do on a computer. It's not a strawman, it's just a developer-centric niche.

1 - https://wiki.termux.com/wiki/Main_Page

foob··on F5Bot: Email Keyword Alerts from Reddit, Hacker News, or Lobsters
The author of F5Bot recently published a guest-post on the Intoli Blog called How F5Bot Slurps All of Reddit [1]. It goes into a lot of technical detail about how the service works and some of the challenges that arise when dealing with such a large number of posts and comments. If you're a fan of F5Bot, or just learning about it now, then you might be interested to check that out.

As others have mentioned, F5Bot is free and completely driven by donations and Lewis Van Winkle's generosity. Please consider giving a donation if you're a user of the service and find it helpful [2].

[1] - https://intoli.com/blog/f5bot/

[2] - https://www.patreon.com/f5bot

foob··on Ask HN: What is it like to run a VPN as a business?
As part of a company in the residential proxy space [1], I just wanted to point out that this type of proxy is used in a very different way than low-end VPNs. Residential proxies tend to much more expensive, and this results in them being used almost exclusively for legitimate business purposes. It's even a standard practice to go through a KYC process before obtaining access to residential proxies in order to ensure that they'll be used responsibly.

VPNs are often used for piracy, SPAM, and other nefarious purposes while residential proxies are primarily used to obtain access to data through web scraping. Large companies like Google are able to scrape the same sites without getting blocked already, and proxies help to level the playing field between innovative startups and established players. I can certainly understand the critique, but I strongly believe that the existence of residential proxies results in a lot more good than evil.

[1] - https://intoli.com

foob··on Show HN: Termtosvg – Record terminal sessions as SVG animations
It is on UserVoice [1], and it has over two thousand votes there. They've marked that as "sorry, no plans," and they've marked previous issues as "by design" [2]. They use Chrome announcing plans to deprecate SVG animations as their primary justification, but Chrome backtracked on those plans after realizing that there were important use cases that mattered to the community [3].

> In the 15 months since we announced our intention to deprecate and eventually remove SMIL, we’ve heard a variety of opinions from members of the community. We value all of your feedback, and it's clear that there are use cases serviced by SMIL that just don’t have high-fidelity replacements yet. As a result, we’ve decided to suspend our intent to deprecate and take smaller steps toward other options.

I understand that they don't have an infinite budget, but it really seems like they made their mind up here years ago and haven't been interested in listening in the community since then. It's also a bit circular to "prioritize based on how common the standards are found used in the wild" when they're single-handedly responsible for preventing developers from using SVG animations "in the wild" in the first place.

[1] - https://wpdev.uservoice.com/forums/257854-microsoft-edge-dev...

[2] - https://developer.microsoft.com/en-us/microsoft-edge/platfor...

[3] - https://groups.google.com/a/chromium.org/forum/#!msg/blink-d...

foob··on Show HN: Termtosvg – Record terminal sessions as SVG animations
This is pretty awesome. I'm a big fan of both SVG animations and terminal recorders, so this is right up my alley. I previously built a small library called svganimator for creating smooth animations between static SVG images [1], used generated SVG animations to help design the Wayback Machine loading animation [2], and also put together a fairly comprehensive comparison of terminal recording solutions [3]. I'll need to update the comparisons to include termtosvg, I can't wait to try it out and see what the file sizes look like.

As others have mentioned, the major issue with SVG animations is that Microsoft doesn't plan to ever include support for them in Edge. This means that you either need to create fallbacks specifically for Microsoft browsers, or to disregard that portion of the market on your website. It's a real shame because SVG/SMIL allows you to create high quality animations which require a fraction of the bandwidth that would be necessary for comparable GIF or video files.

[1] - https://github.com/sangaline/svganimator

[2] - https://intoli.com/blog/designing-the-wayback-machine-loadin...

[3] - https://intoli.com/blog/terminal-recorders/

foob··on Recreating Python's Slice Syntax in JavaScript Using ES6 Proxies
As the author, I'm really glad that you enjoyed this enough to share it, but I doubt it will get much traction because it was just on the front page yesterday. Maybe you would have better luck submitting the GitHub repository instead :-) [1].

[1] - https://github.com/intoli/slice

foob··on Recreating Python's Slice Syntax in JavaScript Using ES6 Proxies
There's a table in the GitHub repository that shows the inputs and outputs for various equivalent slices in JavaScript and Python [1]. If you're familiar with the Python slicing syntax, that should make the syntax mapping fairly clear. The way to translate a Python slice definition to JavaScript is to use double square brackets instead of single ones and to replace the colons with commas. So array[::-1] becomes array[[,,-1]], array[3:] becomes array[[3,]], etc.

[1] - https://github.com/intoli/slice#for-people-who-know-python-a...

foob··on Recreating Python's Slice Syntax in JavaScript Using ES6 Proxies
That would be a neat interface too, but it would necessitate a somewhat different approach than the one taken in the article. You can only use a proxy to trap operations that are already supported by the object that's being wrapped. The SliceArray class inherits from the builtin Array, and it therefore doesn't support the call operation. You would need to initialize a second custom class that inherits from Function, wrap that with a proxy, and then use the SliceArray as the actual target inside of the traps. It's definitely doable, but it's more complicated than one might expect.

I mentioned in the article that Remote Browser is an interesting project to look at to see some more advanced proxy usage. One of the things that it does is to define a CallableProxy class [1] which facilitates attaching a call handler to objects that otherwise wouldn't support them. The code itself isn't complicated at all, but it takes a bit of thought to make the pieces fit together just right.

- [1] - https://github.com/intoli/remote-browser/blob/9ffdd1b5b0a9b4...

foob··on How Ceiling Fans Allowed Slaves to Eavesdrop on Plantation Owners
The title makes it sound like there was some interesting technical trick or something. As far as I can tell, the article basically amounts to, "humans have ears, and putting slaves in close proximity to their slave owners allowed them to hear their conversations." Am I missing something, or is this just clickbait?
foob··on We Should Teach Music History Backwards
It depends a lot on the specific field that you're talking about. I studied both music and physics in college, and I think that teaching the history backwards would work for music, but not for physics. You can understand modern harmonic theory without knowing the details of how it evolved out of contrapuntal theory. It would be easy to learn about the current state of music theory as is, and then extend your understanding afterwards by learning about the context and history which led to the current state. Physics isn't really like that. There's no way that you're going to understand general relativity first, and then learn afterwards that the theory evolved from Newton's laws. Some fields successively build on top of their own histories while others morph and change in such a way that knowledge of their histories is nonessential for understanding their current state.
foob··on What's My Color IQ?
The difference is definitely genetic. Colorblindness is generally caused by recessive genes that are part of the X chromosome. That means that the proportion of men who are colorblind is basically equal to the proportion of X chromosomes with one of these recessive genes. Women have two sets, so they need the gene on both chromosomes in order to exhibit colorblindness. This means that their proportion of colorblindness is roughly the square of that of men (actually less because there are different types of colorblindness).
foob··on To Yarn and Back to Npm Again
I agree, pnpm is excellent. The node_modules directory can easily take up hundreds of megabytes, and the storage space savings that pnpm provides are really convenient when you write a lot of small projects with similar sets of dependencies. I did a comprehensive benchmarking comparison on npm, pnpm, and yarn a while back, and pnpm was the clear winner for my needs [1]. Those benchmarks are admittedly outdated now because, as this submission points out, npm 6 introduced significant improvements over npm 5. Despite that, pnpm is still an underappreciated contender in the space.

- [1] https://github.com/pnpm/pnpm

- [2] https://intoli.com/blog/node-package-manager-benchmarks/

foob··on Oracle plans to dump risky Java serialization
Here's an article which explains in detail how pickles/serialization work in Python, and how pickles can be constructed to evaluate malicious code when they are deserialized. That's specifically about Python, but the same issue exists in many other languages.

[1] - https://intoli.com/blog/dangerous-pickles/

← PreviousPage 3 of 9Next →