HN user

austincheney

6,940 karma

Sensitive people make me sad.

"Some people tell me it's inconsistent with human nature to operate this way--that people need to be protected from harsh truths and that such a system could never work in practice. Our experience--and our success--have proven them wrong."

That is from Principles by Ray Dalio about sensitive people being confronted with radical honesty.

Posts21
Comments4,165
View on HN
github.com 4y ago

Show HN: WebSockets Explained with TypeScript

austincheney
3pts0
edition.cnn.com 5y ago

Dogecoin tumbles after Elon Musk jokes about it on 'SNL'

austincheney
4pts1
www.cnn.com 5y ago

Climate change clearly visible as NOAA prepares to release new 'normals'

austincheney
3pts0
github.com 5y ago

Simple Means Fewer

austincheney
1pts0
github.com 5y ago

Show HN: Share File Systems

austincheney
2pts0
news.ycombinator.com 6y ago

Ask HN: Test Automation Guidance

austincheney
1pts0
news.ycombinator.com 6y ago

Ask HN: Share your virus apocalypse stories

austincheney
1pts0
github.com 7y ago

Show HN: Semantic Text

austincheney
1pts0
news.ycombinator.com 7y ago

Show HN: Sparser – A Multilanguage Parser

austincheney
65pts15
github.com 7y ago

Delusional Developers

austincheney
3pts0
www.jaybosamiya.com 7y ago

Exploiting Chrome V8: Krautflare

austincheney
61pts16
www.nytimes.com 7y ago

A Census Question That Could Change How Power Is Divided in America

austincheney
2pts0
prettydiff.com 9y ago

The DOM Explained, Quick and Simple

austincheney
2pts0
news.ycombinator.com 9y ago

Headless Chrome now in stable release

austincheney
1pts0
prettydiff.com 9y ago

Making a good diff algorithm

austincheney
314pts60
github.com 9y ago

Show HN: Biddle, OS and language agnostic application distribution

austincheney
3pts4
prettydiff.com 10y ago

The DOM Explained, Quick and Simple

austincheney
4pts0
mailmarkup.org 12y ago

Generate revenue from online privacy (compete with Google, Facebook, NSA, etc.)

austincheney
2pts0
prettydiff.com 12y ago

Lexical scope in colors using JavaScript

austincheney
1pts0
prettydiff.com 13y ago

Show HN: Scope and closure in JavaScript with colors

austincheney
1pts0
prettydiff.com 13y ago

A language aware diff tool for common web languages

austincheney
1pts0

Google monetizes search with ads.

Google monetizes search but not with Google ads. This is the primary distinguisher. Its an auction selling space on page for a supplier to provide their own textual content. Google's online advertisement businesses don't sell space on Google pages, but online ad products for other peoples' pages.

Google considers all of this as ad revenue, but distinguishes search from their advertisement products in their revenue filings.

Search is Google’s most lucrative unit. In 2020, the company generated $104 billion in “search and other” revenues, making up 71% of Google’s ad revenue and 57% of Alphabet’s total revenue.

From your second source. I guess you were conflating ad revenue to online advertisements. Its all ad revenue, but its not all online advertisements.

Google does make money from ads, but that is not their primary business. Yes they have AdWords and they bought DoubleClick around 2007. They also have YouTube that took them forever to figure out how to monetize. They bought Urchin (Google Analytics) specifically to monetize AdWords.

Google’s primary business is search. They monetize search in a couple different ways. The primary revenue model for search is micro auctions to determine ranking of product placement on search results.

I don’t have numbers but I suspect Google ads get far more eyeballs than do their search results. The distinction though is margin not quantity. Ads aren’t worth very much. Google ads generate a higher margin than Facebook ads but still tiny, like maybe fractions of a penny. When I was at Travelocity a million years ago I remember hotels bidding up to $18 per click for placement on searches related to Las Vegas. Not only is that click-through worth a fortune it is also relevant and thus far more likely to be clicked.

EDIT

Death by a thousand paper cuts.

Somebody provided a source below, they clearly did not read, which explains all of this:

https://www.cnbc.com/2021/05/18/how-does-google-make-money-a...

Search is Google’s most lucrative unit. In 2020, the company generated $104 billion in “search and other” revenues, making up 71% of Google’s ad revenue and 57% of Alphabet’s total revenue.

This section of the article further details how the auctions differ from online advertisement products.

I don't have the source but Google's chief economist has been very clear about how the micro auctions work and generate revenue separately from display ads.

No one is working towards degrading performance on purpose

You are not participating in the same interviews that I am then. Most developers know querySelectors, for example, are super slow. They will fight to death to retain them and anybody who suggests any alternative is not compatible for hiring. If they know its slow and deliberately choose to avoid faster alternatives how is that not degrading performance on purpose? How is that not common?

No, its a common misunderstanding of search and tree models. The OS is faster, by a tiny bit, at traversing the file system than my JavaScript application. It is only search that is slower, and dramatically so. I don't have visibility of the OS code so I cannot be certain why that is. I speculate its because the OS is doing too much.

With the DOM querySelectors are dramatically slower than using static methods with arbitrary strings as arguments. This is likely because a query string must be parsed against each child node to determine if the child node is a match to the supplied query. Likewise, modern OSs use ancient conventions to search the file system, such as wildcards, along with more modern advanced search syntax. These are rules that must be parsed against each child artifact from a tree segment. My application deliberately doesn't do that.

To compound matters Windows, don't know about OSX, caches search results so that subsequent searches are a little less slow, which incurs a greater performance penalty on first search. My application doesn't do that either. Each search triggers tree traversal, so its always as fast reading from the file system.

Mentioning any of this during a job interview makes for intriguing conversation with the interviewer. I do detect genuine interest and curiosity from the interviewer. At the same time they know their team will fight to the death at many mention of alternatives to querySelectors and/or JSX, so you have just effectively terminated the interview. Anything there after is purely for the interviewer's personal interests.

I have been doing web work for over 20 years. Everybody claims to care about performance, training, security, and so forth. The only thing that really matters in practice is comfort. Until developers are willing to abandon certain areas of comfort things like performance are only given lip service. In doesn’t matter what they want if they are actively working in opposition. This is performance is a massive incompatibility to hiring.

Children in every demographic group have been affected, but Black and Hispanic children, as well as those from low-income families, those with disabilities and those who are not fluent in English, have fallen the furthest behind.

The pandemic affected everybody almost equally by political jurisdiction so demographic stratification suggests there is more to blame in addition to the pandemic. Looking at young children in my area my first blame is convenient access to touchscreens.

A micro service to a localhost node application. There is a file system API in the browser now but it isn’t mature and is highly restricted compared to the terminal.

Why would you suspect that? Are you a JavaScript developer? If so have you seen the terrifying horror on people’s faces when you mention alternatives to querySelectors or that you can write/execute code faster by not using vDOM? Mentioning performance is the fastest way to exit a job interview.

I also constantly remind myself that "perfect is the enemy of shipped".

That is easy to say as marketing first personality with access to money. In this case shipping anything is critical and you can fix it later.

As a bootstrapped technologist product quality is all you’ve got. If the product isn’t revolutionary then nobody cares and you won’t change their opinion. So, in this case you need to get it mostly right, because you won’t get a second chance at a first impression.

It’s more subtle and monumental than that. Before this JS was already executing at the same speed as Java except for in arithmetic. At this rate of improvement eventually JS will execute much faster than Java in all areas except arithmetic where it will achieve near parity.

I am not seeing any other programming language continuously improve their execution speed this much.

https://jsbench.github.io/#b39045cacae8d8c4a3ec044e538533dc

Look at DOM performance. Chrome has a ceiling of about 45m ops/s where FF max speed is dependent upon your ram and bus speed reaching beyond 4-5b ops/s. In both though querySelectors perform at about the same speeds as slow as 25000 ops/s.

I have written an OS GUI that executes in the browser. It loads, including full state restoration in about 120ms. I was recently interviewing with a search engine company, one of the big ones, where I could demonstrate that JavaScript tool can execute file system search much faster than the OS and produce better results. They seemed really impressed.

Despite all of this my biggest learning about performance is that mentioning performance during job interviews shows that you are incompatible with other JavaScript developers and will not be hired.

I suspect cheating is not the primary problem. I suspect, like so many other decisions in software, the primary problem is unrealistic and unfounded expectations. This behavior typically comes from unmeasured assumptions that may work well in one narrow circumstance applied into an unrelated circumstance and then blaming the result instead of the decision. This is bias.

Unless there is a solution that directly addresses hiring bias this company will fail like all the others before it for exactly the same reason: their clientele will apply bias (the actual cause of the problem), be unhappy with the result, and then blame the service provider. In sales the client is never wrong, which means the service provider is always wrong. This is why software overspends on recruiters and then invents fantasies like React developers with a year of experience are rare.

Total control by whom? Most financial transactions occur between numerous financial institutions and wiring intermediaries in between. The finance network is far more decentralized than the web even after consideration for things like SWIFT.

Your financial transactions are already tracked by numerous parties. This is neither secret nor suspect. Without visibility over the transfers, distribution, and behaviors therein how would governments and financial institutions account for ethical violations?

There are legal reasons why that does not work. For example consider military separation. A candidate is under no obligation to disclose their military/veteran status. If that candidate then becomes mobilized the federal obligation trumps the commercial obligation. Employee leaves and not only are they separated from the work without any repercussion the employer is required to retain that employee in an unpaid status for at least 5 years unless a rare legal exclusion is met.

There is also pregnancy. An employer cannot terminal an employee for taking time to give birth and taking some more time off immediately after.

These are the two most obvious reasons though I am sure there are many more that they cannot enforce.

Certificates, certificate chains, certificate installation. In theory the concepts sound easy and there are numerous guides and instructions online. Once you try to become your own CA the challenge becomes real. Trying to write an automated solution cross-OS feels like running a marathon on your hands.

I am a JavaScript developer so my opinions are limited to that slice of software.

Senior used to mean someone experienced enough to become an advanced problem solver. Those days are long over.

Now senior is equivalent to expert beginner. They are really fast and confident at using tools. This advanced and rapid tool usage means they can solve some problems quickly, but they cannot imagine any solutions aside from their favorite tools. The most important limitation there is that most senior developers cannot write original software. It’s a world of a few commonly known problems with commonly applied repeated solutions and everything else is discarded with excuses that equally lack originality.

If, as a JavaScript developer, you are able to write original software without popular tools you are commonly viewed as something like a dark wizard, equal bits of magic and evil. People view this as mysterious and incompatible with reality (you won’t be hired).

You are not the first to comment on the video resolution. I really must redo those.

Back in August the project was mostly working. Multi-file copy worked across the network and across the security model. At that time I did not have any encryption working (TLS, WSS). I am working on this now. Certificate management/deployment is something I am new to and its a bit more challenging in a fully decentralized application. There are three stages to this:

1) Certificate creation

2) Certificate installation into the OS trust store

3) Certificate exchange between agents

I can do a self-signed root server certificate with confidence. I would rather have a root certificate for user level of the security model and signed device certificates for increased security against device spoofing, but I am failing to get correct. I can make it work like a hammer in Windows, but its not correct and it won't work at all in Linux. I suspect certificate exchange will easily be part of the invitation process, but then I need to device a certificate challenge as an enforcement measure. This is a humbling experience reminding at every step that I don't really know what I am doing.

Also there was a catastrophic routing problem. You could perform all file operations except copy from one remote user/device to a different remote/user device. Everything is super simple when the network effect is two nodes (a request/destination and a source). When there is only two nodes you don't need any routing support. Even when the security model actually pushes the transmission to three modes, such that you are sending to a user's primary device and the transmission must relay to that remote user's secondary device the transmission is still simple as this is assume by the security model without additional work. When the transmission expands to three separate nodes (request, source, destination) you have to introduce routing. The routing is greatly complicated by the security model.

Now that I am working on routing file copy over the network is broken. Once I introduce encryption and routing I will ready the project for public beta and then resume work on audio/video calls.

The framework argument is purely superficial and boils down to two camps: those who can write applications and those who need some (maybe a lot) help.

There is a lot of freedom, performance, and security you sacrifice when you need so much help that you need a third party to simply just do it for you.

https://github.com/prettydiff/share-file-systems

That is my application that creates an OS GUI in the browser. Plenty of features with o framework.

* Code size (on the front-end) 2mb unminified.

* Load time in the browser (including state restoration) about 120ms.

* The first version took 15 days to write from scratch.

When people claim there MUST be a framework its clear they have no idea what they are talking about. It is clearly a case of Dunning-Kruger effect where they can compare their experience with frameworks on one hand... and they have nothing to compare it to, because its all they know.

Nicomachean Ethics. https://en.m.wikipedia.org/wiki/Nicomachean_Ethics

Usually critical thinking means two things simultaneously:

1. Degree of willingness to defy group dynamics. Group can refer to an immediate group such as family or employment team yet also more broadly as culture or identity. This defiance is not spontaneous, as in an adolescent behavior for increased independence, but cognitive and intentional.

2. Degree of willingness to act. Under stress people typically defer to a fight or flight dichotomy of decisions. When either the fight or flight conditions are unclear they do nothing. A willingness to act suggests that in the face of uncertainty a willingness to commit to a decision, even if wrong, and execute as opposed to doing nothing as a posture for uncertainty avoidance.

I am working on a point to point media tool right now and it’s super challenging to get right. There is no server. There are just peers.

Client/server is very easy, because there is a centralized common point of access that manages everything. In a serverless model you have to connect via identity that has no fixed address.

Should we collectively conspire to make developing software harder so that n00bs will be out of a job

Ideally, the goal of software is automation. When that actually does occur both the employer and engineer make more money as there are fewer mouths to feed.

SPAs only suck as much as we suck.

We suck pretty bad. SPAs are often the default because that is what the framework dictates and nobody trusts a JavaScript developer to delivery any kind of quality product without some epic massive framework, including ourselves. This is the standard for hiring, performance, and delivery and nobody dares deviate. If its not an NPM package written by an anonymous stranger or an API on the framework its not an option. We don't trust each other and management doesn't trust us, so let the framework dictate our every decision.

Browsers give you a ton of stuff for free

True, but irrelevant. I have written an OS GUI, including full file system support, in the browser that performs faster than native OS GUIs. My biggest learning from this is talking about performance in a job interview is the fastest way to kill the interview. Performance, like security, requires trade offs that deviate from comfort. If the common developer is insecure comfort is the only thing that matters.

JS hiring expects the following: React components, 2-6 weeks of JS practice, the ability to use map/filter on arrays, and CSS. If you overshoot that you begin to enter unknown territory that intimidates other developers. The better you are the less employable you become as the further from the bell curve you drift.

If you are wondering why this is or how we got here the answer is trust, or the lack thereof. In software there is a long standing bias: if you can see it visually its worth less. I have been doing this work for more than 20 years and that bias predates my work, so its been around for a while. Bias is continuously reinforced by the lack of standards in software hiring and the inability of employers to train their employees.

This lack of trust means that employers do not trust their employees to perform original work and likewise the developers don't trust each other. This is why absolutely everything, I mean this literally, is a downloaded NPM package, because the developers will trust an anonymous stranger to write original code before they trust anyone they know. There is all kinds of excuses to qualify this, of which some are bizarre and nearly all lack any kind of merit.

This is why its irrelevant what the browsers provide. Its baked into the framework, an NPM package, or ignored.