I’m not surprised but a little disappointed that most of the older techniques aren’t mentioned:
- checkbox/radio inputs can be used to toggle state with `:checked ~ .foo` selectors
- `:focus` (and now `:focus-within`, and `:active` though it’s less useful) can be used similarly, but also allow child selection [Edit to add: `tabindex="-1"` makes anything focusable with a pointer input, but doesn’t capture keyboard tab or iteration with assistive tools]
- `:target` can be used similarly, paired with fragment links [Edit to add: but beware history entries, this can be a poor UX]
- `<label>` can be used to not only set those states but also trigger scrolls (including within `scroll-snap` parents) without creating navigation history entries
- the `attr()` function can be used to reference server-dynamic HTML data for display with `content` in pseudo-elements
- I have to assume CSS animations are adopted widely enough that people aren’t using JS for that where it isn’t needed; but you can also use declarative, even interactive, animations in SVG
- speaking of which, inline SVG (even `<use>` references) are part of the CSS cascade, and you can change any CSS-addressable property with `currentColor`
- and you can nest HTML in SVG with `<foreignObject>` if you want to use SVG techniques in HTML
- probably not worth mentioning but in case you don’t know... if you miss table layouts, you can use them with `display` on basically anything; if you want table semantics without tabular rendering you can override `display` as well
Alllllll of that being said, if you use these techniques check your stuff with assistive technologies!
Vincent van Gogh. Born 2043, Brabant, Netherlands. Child prodigy in arts, sciences, and engineering. Graduated from Erasmus University, Rotterdam in 2055 with joint masters in particle physics and fine arts. Exhibited at the Louvre at age 14. Discovered a universal nontoxic perpetual energy source at 16 and joined staff of the Huge Monad Collider that same year as doctoral researcher in functional cosmology. There, proved that spacetime is lazily evaluated and that speed of light arises as input latency in underlying algebra. Disappeared November 23rd, 2063, leaving behind notes for a "personal temporal debugger" and a diatribe, hidden in a stencil of rats, railing against the prevailing culture of universal citizen tracing. Last sighted in background of art documentary, Exit Through The Gift Shop (2010); current whereabouts within continuum unknown, assumed to be still at large. Eartags never found.
This suggestion put me in mind of George Romero’s seminal 1978 analysis of the potential for reallocation and repurposing of large-scale commercial property, and in 2021 the notion of high-density rehousing for communities displaced by a public health crisis seems all the more relevant.
It doesn’t have to be this way, but that’s partly a matter of culture. By aspiring to present/think/act as a monoplatform, Google risks substantially increasing the blast radius of individual component failure. A global quota system mediating every other service sounds both totally on brand, and also the antithesis of everything I learned about public cloud scaling at AWS. There we made jokes, that weren’t jokes, about service teams essentially DoS’ing each other, and this being the natural order of things that every service must simply be resilient to and scale for.
Having been impressed upon by that mindset, my design reflex is instead to aim for elimination of global dependencies entirely, rather than globally rate-limiting the impact of a global rate-limiter.
I’m not saying either is a right answer, but that there are consequences to being true to your philosophy. There are upsides, too, with Google’s integrated approach, notable particularly when you build end-to-end systems from public cloud service portfolios and benefit from consistency in product design, something AWS eschews in favour of sometimes radical diversity. I see these emergent properties of each as an inevitability, a kind of generalised Conway’s Law.
Note, this is botanically incorrect. Leguminous plants, as compared to angiosperms generally (and most starkly when compared to those with pericarpal fruits), may have differential edibility: that is, beans are not the fruit; the seed pod is the fruit (i.e. the mature ovary of the flower), and beans are an edible seed contained within the pod. Some legumes with edible pods (notably phaseolus vulgaris, the "green bean" or haricot verts) are known as beans in the culinary vernacular, but this is solely by common name, and does not hold up to anatomical scrutiny.
Regular correspondents to this forum may also encounter Java beans, but be warned that their palatability is disputed, and ungoverned use, particularly in their enterprise form, can lead to buildup of toxic and irrevocable technical debt.
The problems with 23:59:59.9999 etc are aliasing and granularity issues, i.e. breaks and overlaps when used as intervals or inequalities, and the consequences may be anything from innocuous (calendar alarms) to catastrophic (financial reporting).
Firstly, users tend to write them as 23:59:59 or even 23:59. When used as a query, this can skip a second or even a minute of data.
Secondly, 00:00:00.0000 can match the first moment of tomorrow, which may also be wrong, and happens readily when timestamped data is imported from systems with per-second granularity.
Finally, these forms constrain any internal representation, which cannot now ever evaluate to 23:59:59.99995 lest we suffer the same category of fault. This'd limit a standard library's timestamp object to a precision of 10μs, which is pretty coarse for many timing needs.
The proper form, that is, the ideal mathematical representation, is an interval with a closed left/lower bound and an open right/upper bound. That's written like
[00:00:00.0000, 00:00:00.000+1day) or equivalently
{ t | 00:00:00.0000 <= t < 00:00:00.0000+1day }
and can be pronounced "all times from and including midnight onwards, until (but strictly excluding) midnight the next day". These half-open intervals correspond advantageously to the continuously linear assumptions of chronometric time, with two properties of critical relevance: they can be recorded via commonplace machine representations of timestamps; and, they may be compared, subdivided, and concatenated without inadvertent breaks and overlaps. These qualities eliminate most aliasing & granularity concerns.
Some (sadly not all) programming languages have such a construct available in their standard library.
I think there's a paper by Lamport recommending this form, although I couldn't find it in a quick rummage through the archives.
That article doesn't even create anything. It's a comparative summary of existing practices in the manufacturing sector. The word "scrum" appears, exactly once, as part of an incoherent rugby metaphor.
Elevating a waffling HBR feature to the status of antecedent decalogue is totally on brand for the clerical formalists that promote Scrum.
In high performance teams, Agile begins where Scrum ends, and as the remarks here extensively demonstrate, awful working environments won't be improved by a bunch of ceremonies.
Apple patents are an evergreen topic for tech journalists, but Apple never announces features or products through patent filings. If you're seeing a public filing for a patent from Apple on a thing that they aren't currently shipping, that means it's something they have no plans to ship.
It should not be surprising to anyone that long-established protocol standards are capable and versatile. DNS and LDAP are robust tree-structured replicated attribute stores; mix in Kerberos for a complete foundation of general purpose directory services. NNTP supplies a straightforward Gossip protocol for eventually-consistent distributed pub/sub. MQTT is still good for lightweight telemetry. I have services I authenticate with via Lamport's mostly forgotten scheme (S/KEY). And so on.
There is a current fad of HTTP+JSON as a generic protocol substrate, but it's almost always a mediocre fit for the problem at hand. Go read the RFC archives, there's diamonds to be found.
On the other hand, and perhaps even by the same token: using EC2 metadata isn't a completely terrible idea if it's the infrastructure you already have and the semantics line up with specific needs.
There are also up, down, charmed, and strange proxies, with obvious applications in quantum computing, nonrepudiation, and dairy farming. Strange proxies were thought to be purely theoretical until an accident involving a rubber band, a liquid lunch, and a particle accelerator collided a transparent squid with varnish at relativistic velocities and the resulting core dump subsequently examined for overflows.
The more experienced a developer I become, the more strongly (and negatively) I feel about nils and nulls and their ilk. I have sympathy for C.A.R.Hoare who in 2009 apologised for the apparent invention of null references in ALGOL W (1965), calling them a "billion-dollar mistake". I've come to regard them as a data singularity, and when I design data structures and interfaces today I am deliberately avoiding/outlawing them; all my relational fields are NOT NULL and I choose either meaningful defaults, or EAV or equivalents instead; in method parameters I would rather something not exist than for it to accept a null reference or value. And I believe that the resulting code is more modular, more easily refactored and more reusable a result, errors are better handled, and the resulting data structures and calling arguments more easily interpreted, more readily queried and destructured, and are (so far) proving generally better fitted to real-world domains.
Ideally it would have some kind of anthropomorphized graphical avatar applicable to the context. Research out of Stanford[1] as far back as the '90s has suggested such interfaces as a means for improving human-computer interaction. If I was writing a letter, for example, perhaps an animated document fastener would be appropriate. In this case, why not an animated, anthropomorphic pizza that morphs into the Domino's logo as a paid-for branding.
My experience of LinkedIn has declined from a marginally diverting way to follow career progress of former colleagues (2005-2009) through a pointless recruiter circle-jerk (2010-2014) to being an unremitting fountain of scam sales-lead invites from profiles of dubious credibility (2015-).
I disabled all notifications long ago.
It is possible that this is the unavoidable fate of any professional-oriented social networking service. Nonetheless the value of LinkedIn to me is now effectively zero. I don't know anyone who respects their brand, and I'm left wondering if there's a gap in the market; c.f. Facebook vs Myspace ca.2008.
There was an interesting nugget in the comments under that article:
The crucial thing about this is that it is a pitch by the Tolkien estate rather than to them. Christopher Tolkien hated the Peter Jackson movies [...snip...]
I was an avid reader of Tolkien as a teenager and the movies were a disappointment to me as well. Too much spectacle and derring-do, whilst I always enjoyed the construction of the world and the inner lives & secrets of the characters. The omissions made were sometimes grotesque: the removal of Tom Bombadil alone made the mockery of the books. Skipping the entire homecoming chapter of the hero's journey ("the scouring of the shire") is a common complaint and a travesty of storytelling.
However, Christopher Tolkien is the ultimate Tolkien purist, after a lifetime of curating his father's work. In the few interviews he gives he's clearly dismayed by any deviation from the original intent. I suspect he'd likely be unhappy with any TV adaptation as well.
Like many other Tolkien fans I'd much rather see an adaptation of The Silmarillion, which if anything is the more epic book of tales.
As the anecdotes offered in these threads illustrate, it is not possible to cost or value healthcare on an individual basis.
Therefore, any market for individual purchase of healthcare (whether via insurance or directly) can only have faulty price signals.
Systems based on markets with faulty price signals are wide open to manipulation.
The perpetuation of such markets is contemptible, and particularly so in the case of healthcare since there is a straight line to be drawn from dysfunctional systems to human suffering.
Fun story: I once heard of a startup that was keeping all their data on ephemeral local storage, mirroring it between instances across AZs for "high availability", and then, er, using spot pricing for all instances to save money.
One day the spot price skyrocketed and all their databases got shot down.
There already is a SRV service name reservation for both http and www-http, with Tim Berners-Lee as the contact name. Fun fact: using DNS address records ("A" or "AAAA") for endpoint name resolution in HTTP is a convention; it is not required in the standard or in any of the normative references. Web services do not own the address record and should never have been using it in the first place. Nonetheless they continue squatting addresses in a de facto assertion of unwarranted privilege, and every other use of the DNS has to steer carefully around.
When SRV is discussed e.g. on the HTTP/2 list, the objections of resolution speed and number of round-trips are usually raised. But SRV records do not intrinsically require an additional lookup or round trip. Unoptimised zone configurations (especially those that slice at _tcp, which occurs at some Microsoft shops) may fare less well, but that is true of all DNS configuration. Services that care about resolution speed already optimise their DNS as necessary, and they would for SRV as well if it were mandated.
In practice, the reasons for non-adoption are, mundanely, simply a matter of inertia, combined with a lack of motivation: the browser vendors who in practice write the HTTP standard do not care to change and have no external force that will push them off overloading the address record.
I don't believe it is quite so simple. Remark ordering also appears to incorporate
* freshness (new remarks get a moment at the top)
* reputation (remarks from high-karma accounts linger higher, longer)
and I may possibly have also observed:
* a penalty box: hidden downweighting, or reduction in effective karma, imposed by moderators upon troublesome users that weren't egregious enough to ban/shadowban.
Word of warning, if you use an ad/content blocker like uBlock Origin, and block 3rd-party JS, then HIBP may give up on its k-anonymity mechanism and just sends your password to their server in cleartext.
Ensure you specifically permit loading jQuery from cloudflare.com, and check network traffic using a test password first.
Ironically, Erlang’s message passing makes it more like Alan Kay’s original definition of OOP than the bowdlerised view of OO perpetrated by Java and C++.
I once told a competitor that we're using Javascript extensively and our TTM for new features is super low thanks to simply adding NPM modules whenever necessary.
In hindsight I should also have mentioned NoSQL databases and a microservices architecture.
It worked before, they broke it, and as usual the response is an egregious "fuck you" and a queue of apologists castigating the aggrieved that they were Doing It Wrong All Those Years And They Must In Future Conform To Only The Approved Way.
And with that, I mourn the obsolescence of my last remaining "absolute unit" joke and will have to develop something equally satisfying based on dressed lumber to replace it.
- checkbox/radio inputs can be used to toggle state with `:checked ~ .foo` selectors
- `:focus` (and now `:focus-within`, and `:active` though it’s less useful) can be used similarly, but also allow child selection [Edit to add: `tabindex="-1"` makes anything focusable with a pointer input, but doesn’t capture keyboard tab or iteration with assistive tools]
- `:target` can be used similarly, paired with fragment links [Edit to add: but beware history entries, this can be a poor UX]
- `<label>` can be used to not only set those states but also trigger scrolls (including within `scroll-snap` parents) without creating navigation history entries
- the `attr()` function can be used to reference server-dynamic HTML data for display with `content` in pseudo-elements
- I have to assume CSS animations are adopted widely enough that people aren’t using JS for that where it isn’t needed; but you can also use declarative, even interactive, animations in SVG
- speaking of which, inline SVG (even `<use>` references) are part of the CSS cascade, and you can change any CSS-addressable property with `currentColor`
- and you can nest HTML in SVG with `<foreignObject>` if you want to use SVG techniques in HTML
- probably not worth mentioning but in case you don’t know... if you miss table layouts, you can use them with `display` on basically anything; if you want table semantics without tabular rendering you can override `display` as well
Alllllll of that being said, if you use these techniques check your stuff with assistive technologies!