<?xml version="1.0" encoding="UTF-8"?>
 <rdf:RDF xmlns="http://purl.org/rss/1.0/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://web.resource.org/cc/" xmlns:syn="http://purl.org/rss/1.0/modules/syndication/" xmlns:admin="http://webns.net/mvcb/">
  <channel rdf:about="http://pinboard.in">
    <title>Pinboard (janpeuker)</title>
    <link>https://pinboard.in/u:janpeuker/public/</link>
    <description>recent bookmarks from janpeuker</description>
    <items>
      <rdf:Seq>	<rdf:li rdf:resource="https://pdelboca.me/writings/2025/08/01/vibe-coding-fast-fashion.html"/>
	<rdf:li rdf:resource="https://www.derekthompson.org/p/how-ai-conquered-the-us-economy-a"/>
	<rdf:li rdf:resource="https://www.channelnewsasia.com/asia/orang-laut-climate-change-batam-indonesia-4574596"/>
	<rdf:li rdf:resource="https://tanngiapheng.com/"/>
	<rdf:li rdf:resource="https://keith-mcnulty.medium.com/heres-how-two-new-orleans-teenagers-found-a-new-proof-of-the-pythagorean-theorem-b4f6e7e9ea2d"/>
	<rdf:li rdf:resource="https://nora.codes/post/scaling-mastodon-in-the-face-of-an-exodus/"/>
	<rdf:li rdf:resource="https://www.orwellfoundation.com/the-orwell-foundation/orwell/essays-and-other-works/notes-on-nationalism/"/>
	<rdf:li rdf:resource="https://rework.withgoogle.com/print/guides/5721312655835136/"/>
	<rdf:li rdf:resource="https://cloud.google.com/architecture/devops/devops-tech-code-maintainability"/>
	<rdf:li rdf:resource="https://jvns.ca/blog/2021/12/15/mess-with-dns/"/>
	<rdf:li rdf:resource="https://twitter.com/ShopifyEng/status/1465806691543531525"/>
	<rdf:li rdf:resource="https://eng.uber.com/building-ubers-fulfillment-platform/"/>
	<rdf:li rdf:resource="https://locusmag.com/2020/11/cory-doctorow-past-performance-is-not-indicative-of-future-results/"/>
	<rdf:li rdf:resource="https://blog.twitter.com/engineering/en_us/topics/insights/2021/algorithmic-bias-bounty-challenge"/>
	<rdf:li rdf:resource="https://www.todayonline.com/singapore/study-finds-clustering-races-some-neighbourhoods-largely-due-purchasing-power-disparity"/>
	<rdf:li rdf:resource="https://github.com/ossu/computer-science"/>
	<rdf:li rdf:resource="https://skamille.medium.com/an-incomplete-list-of-skills-senior-engineers-need-beyond-coding-8ed4a521b29f"/>
	<rdf:li rdf:resource="https://stripe.com/en-sg/atlas/guides/scaling-eng"/>
	<rdf:li rdf:resource="https://www.orgonomyproductions.info/notes/notes/2021/02/27/TechPosersBauhaus.html"/>
	<rdf:li rdf:resource="https://cloud.google.com/blog/products/identity-security/delivering-the-industrys-most-trusted-cloud"/>
	<rdf:li rdf:resource="https://engineering.atspotify.com/2021/02/11/how-spotify-optimized-the-largest-dataflow-job-ever-for-wrapped-2020/"/>
	<rdf:li rdf:resource="https://matklad.github.io//2021/02/06/ARCHITECTURE.md.html"/>
	<rdf:li rdf:resource="https://www.microsoft.com/en-us/research/blog/lambda-the-ultimatae-excel-worksheet-function/"/>
	<rdf:li rdf:resource="https://opencollective.com/open-web-docs/updates/introducing-open-web-docs"/>
	<rdf:li rdf:resource="https://cloud.google.com/blog/products/operations/on-the-road-to-sre-with-cloud-operations-sandbox"/>
	<rdf:li rdf:resource="https://www.thoughtworks.com/insights/articles/enduring-techniques-technology-radar"/>
	<rdf:li rdf:resource="https://basecodefieldguide.com/"/>
	<rdf:li rdf:resource="https://www.siddharthsarda.com/p/developer-progression-as-a-function"/>
	<rdf:li rdf:resource="https://github.com/kdeldycke/awesome-falsehood"/>
	<rdf:li rdf:resource="https://jeffhuang.com/best_paper_awards/"/>
	<rdf:li rdf:resource="http://www.aosabook.org/en/"/>
	<rdf:li rdf:resource="https://faculty.washington.edu/ajko/books/design-methods/#/"/>
	<rdf:li rdf:resource="https://cloud.google.com/blog/products/containers-kubernetes/understanding-configuration-as-data-in-kubernetes"/>
	<rdf:li rdf:resource="https://berthub.eu/articles/posts/reverse-engineering-source-code-of-the-biontech-pfizer-vaccine/"/>
	<rdf:li rdf:resource="https://www.brainpickings.org/2017/01/10/margaret-mead-work-leisure-creativity/"/>
	<rdf:li rdf:resource="http://rigaux.org/language-study/concepts-history.html"/>
	<rdf:li rdf:resource="https://justjavascript.com/"/>
	<rdf:li rdf:resource="https://cloud.google.com/blog/products/management-tools/sre-error-budgets-and-maintenance-windows"/>
	<rdf:li rdf:resource="https://www.cst.cam.ac.uk/teaching/2021/ConcDisSys"/>
	<rdf:li rdf:resource="https://projecttoproduct.org/the-book/"/>
	<rdf:li rdf:resource="https://cacm.acm.org/blogs/blog-cacm/248022-what-everyone-knows-and-what-no-one-knows/fulltext"/>
	<rdf:li rdf:resource="https://mitpress.mit.edu/books/architecture-depends"/>
	<rdf:li rdf:resource="https://arxiv.org/abs/2010.06973"/>
	<rdf:li rdf:resource="https://blog.interviewing.io/ive-conducted-over-600-technical-interviews-on-interviewing-io-here-are-5-common-problem-areas-ive-seen/"/>
	<rdf:li rdf:resource="https://a16z.com/2020/10/15/the-emerging-architectures-for-modern-data-infrastructure/"/>
	<rdf:li rdf:resource="https://inmotionmagazine.com/eno1.html"/>
	<rdf:li rdf:resource="https://queue.acm.org/detail.cfm?id=2229115"/>
	<rdf:li rdf:resource="https://josephg.com/blog/crdts-are-the-future/"/>
	<rdf:li rdf:resource="https://medium.com/@bellmar/a-software-engineers-guide-to-cybernetics-d57c7def1453"/>
	<rdf:li rdf:resource="https://softwarebyscience.com/very-short-functions-are-a-code-smell-an-overview-of-the-science-on-function-length/"/>
	<rdf:li rdf:resource="https://thesephist.com/posts/programming-environment/"/>
	<rdf:li rdf:resource="http://ethics.fast.ai/"/>
	<rdf:li rdf:resource="https://css-tricks.com/open-source-etiquette-guidebook/"/>
	<rdf:li rdf:resource="https://cloud.google.com/solutions/building-production-ready-data-pipelines-using-dataflow-deploying#updating_streaming_pipelines_in_production"/>
	<rdf:li rdf:resource="https://fs.blog/2015/09/focusing-illusions/"/>
	<rdf:li rdf:resource="https://cloud.google.com/blog/products/management-tools/practical-guide-to-setting-slos"/>
	<rdf:li rdf:resource="https://www.industrialempathy.com/posts/design-docs-at-google/"/>
	<rdf:li rdf:resource="https://increment.com/testing/in-praise-of-property-based-testing/"/>
	<rdf:li rdf:resource="http://www.revue-backoffice.com/en/issues/01-making-do-making-with/nolwenn-maudet-muriel-cooper-information-landscapes"/>
	<rdf:li rdf:resource="https://www.sandimetz.com/blog/2016/1/20/the-wrong-abstraction"/>
	<rdf:li rdf:resource="https://www.theguardian.com/world/2020/jul/05/hong-kong-books-by-pro-democracy-activists-disappear-from-library-shelves"/>
	<rdf:li rdf:resource="https://carolchen.me/blog/jits-impls/"/>
	<rdf:li rdf:resource="https://www.cs.virginia.edu/~robins/YouAndYourResearch.html"/>
	<rdf:li rdf:resource="https://joreteg.com/blog/project-fugu-a-new-hope"/>
	<rdf:li rdf:resource="https://twobithistory.org/2020/06/28/rest.html"/>
	<rdf:li rdf:resource="https://towardsdatascience.com/a-gentle-introduction-to-graph-neural-network-basics-deepwalk-and-graphsage-db5d540d50b3"/>
	<rdf:li rdf:resource="https://zwischenzugs.com/2020/06/25/the-runbooks-project/"/>
	<rdf:li rdf:resource="https://www.newyorker.com/culture/dept-of-design/how-the-coronavirus-will-reshape-architecture"/>
	<rdf:li rdf:resource="https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=bdc48fa11e46"/>
	<rdf:li rdf:resource="https://axispraxis.wordpress.com/2020/05/27/what-is-emergence-and-why-should-we-care-about-it/"/>
      </rdf:Seq>
    </items>
  </channel><item rdf:about="https://pdelboca.me/writings/2025/08/01/vibe-coding-fast-fashion.html">
    <title>Patricio Del Boca - vibe coding is the fast fashion industry of software engineering</title>
    <dc:date>2025-08-11T01:01:42+00:00</dc:date>
    <link>https://pdelboca.me/writings/2025/08/01/vibe-coding-fast-fashion.html</link>
    <dc:creator>janpeuker</dc:creator><description><![CDATA[As code production cheapens, we should examine parallels in other industries and my mind automatically goes to fast fashion: cheaper production led to affordable but low-quality clothes that are cheaper to discard than reuse or even repair. Similarly, I foresee a future of cheap software flooding the market, polluting ecosystems, and harming users. The key difference? In fast fashion, a flawed product means throwing out running shoes after two races; in software, it means sensitive data from thousands of women becoming public, as with the recent Tea app leak.

Cheaper production is often hailed as progress, but when the result is waste that can’t be reused or repaired, overproduction becomes a problem. One could argue LLMs can aswell "repair" code cheaply, but realistically, no LLM will swiftly patch a Log4j vulnerability. We’re headed toward an internet polluted by low-quality code. Choose your own adventure: cheaper and affordable software or an unsustainable, ecosystem-polluting nightmare. A last note, I'm not only talking about ecological pollution but also on the noise pollution that so much shitty code will create. High quality software (whatever that means) will be harder to get if you do not know where to look.]]></description>
<dc:subject>ai engineering quality reference blog</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:janpeuker/b:388f0ef39331/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:ai"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:engineering"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:quality"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:reference"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:blog"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="https://www.derekthompson.org/p/how-ai-conquered-the-us-economy-a">
    <title>How AI Conquered the US Economy: A Visual FAQ</title>
    <dc:date>2025-08-08T12:55:38+00:00</dc:date>
    <link>https://www.derekthompson.org/p/how-ai-conquered-the-us-economy-a</link>
    <dc:creator>janpeuker</dc:creator><description><![CDATA[You see it in the economic statistics. Last quarter, spending on artificial intelligence outpaced the growth in consumer spending. Without AI, US economic growth would be meager.

You see it in stocks. In the last two years, about 60 percent of the stock market’s growth has come from AI-related companies, such as Microsoft, Nvidia, and Meta. Without the AI boom, stock market returns would be putrid.

You see it in the business data. According to Stripe, firms that self-describe as “AI companies” are dominating revenue growth on the platform, and they’re far surpassing the growth rate of any other group.

This Substack is reader-supported. To receive new posts and support my work, consider becoming a free or paid subscriber.


Subscribe
Nobody can say for sure whether the AI boom is evidence of the next Industrial Revolution or the next big bubble. All we know is that it’s happening. We can all stop talking about “what will happen if AI dominates the economy at such-and-such future date?” No, the AI economy is here and now. We’re living in it, for better or worse.

]]></description>
<dc:subject>ai economics</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:janpeuker/b:be18ebb951c8/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:ai"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:economics"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="https://www.channelnewsasia.com/asia/orang-laut-climate-change-batam-indonesia-4574596">
    <title>'Way of life at risk': Under threat from climate change, Batam's sea people face an uncertain future - CNA</title>
    <dc:date>2024-09-01T11:59:09+00:00</dc:date>
    <link>https://www.channelnewsasia.com/asia/orang-laut-climate-change-batam-indonesia-4574596</link>
    <dc:creator>janpeuker</dc:creator><description><![CDATA[Although some still go on long sea expeditions for four to five months a year, virtually all the Orang Laut have now become sedentary, residing in stilt houses on the coastal areas and small islands of Riau Islands province.


Children mingle on a jetty at an Orang Laut settlement in Gundap, Batam, Indonesia. (Photo: CNA/Wisnu Agung Prasetyo)
In the view of some Orang Laut interviewed by CNA, the only way to cope with the increasingly unpredictable weather pattern is to use machine-powered fibreglass boats like those used by modern fishermen or abandon the sea altogether and look for work on land.

“Their way of life is at risk,” Dr Wengky Ariando, a research fellow at the Indonesian Research and Innovation Agency (BRIN) told CNA.

CLIMATE CHANGE

For more than a thousand years, Orang Laut have roamed the waters of Sumatra, Singapore and Western Malaysia with some historical texts suggesting that their existence predates the founding of Sumatra’s Srivijaya Kingdom in the 7th century.

Indonesia’s Riau Islands are home to the largest population of Orang Laut, estimated to be at least 12,000 people in the province alone, while those in other areas have largely been assimilated into the local Malay population.

In Riau Islands, they are distinguishable from ordinary fishermen in the province by the use of retractable bamboo roofs on their boats, known in some Orang Laut dialects as “kajang”.

]]></description>
<dc:subject>asia society article history</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:janpeuker/b:5128cf36847a/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:asia"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:society"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:article"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:history"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="https://tanngiapheng.com/">
    <title>Tan Ngiap Heng | An inner dance creating reality…</title>
    <dc:date>2024-01-29T00:21:09+00:00</dc:date>
    <link>https://tanngiapheng.com/</link>
    <dc:creator>janpeuker</dc:creator><description><![CDATA[When I returned to Singapore, I did not get an engineering job. I worked at The Esplanade as a programmer and took photos for The Arts Magazine. From there, I became a photographer for the arts, especially dance. I was a dance photographer in Singapore even before such a thing was known. A colleague in The Esplanade once gave me some friendly advice to get a real job in engineering instead of wasting my time with the arts. Suffice to say, dance photography was the furthest thing away from a ‘real’ job one could get. Today, loads of photographers in Singapore are enjoying dance photography. I am happy that other people have found the joy in dance photography.

]]></description>
<dc:subject>art asia</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:janpeuker/b:2e0c327214d9/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:art"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:asia"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="https://keith-mcnulty.medium.com/heres-how-two-new-orleans-teenagers-found-a-new-proof-of-the-pythagorean-theorem-b4f6e7e9ea2d">
    <title>Here’s How Two New Orleans Teenagers Found a New Proof of the Pythagorean Theorem | by Keith McNulty | Apr, 2023 | Medium</title>
    <dc:date>2023-04-09T07:18:08+00:00</dc:date>
    <link>https://keith-mcnulty.medium.com/heres-how-two-new-orleans-teenagers-found-a-new-proof-of-the-pythagorean-theorem-b4f6e7e9ea2d</link>
    <dc:creator>janpeuker</dc:creator><description><![CDATA[Another reason for the stir is that the proof these young trailblazers have proposed might make a few established mathematicians eat their words.
This is because their proof uses trigonometry.
Now why is that such a big deal? Well, many of our trigonometric identities and laws depend on the Pythagorean Theorem, and so a number of mathematicians have suggested that any proof of the theorem using trigonometry is circular logic. Put another way, they argue that using trigonometry to prove Pythagoras is basically using A to prove B, when A already depends on B. One strong proponent of this point of view was the mathematician Elisha Loomis, who published a book in 1927 full of non-trigonometric proofs of the theorem, and explicitly stating that trigonometric proofs were impossible.]]></description>
<dc:subject>mathematics</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:janpeuker/b:b5bc0ada3138/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:mathematics"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="https://nora.codes/post/scaling-mastodon-in-the-face-of-an-exodus/">
    <title>Scaling Mastodon in the Face of an Exodus | Nora Codes</title>
    <dc:date>2022-11-20T01:31:28+00:00</dc:date>
    <link>https://nora.codes/post/scaling-mastodon-in-the-face-of-an-exodus/</link>
    <dc:creator>janpeuker</dc:creator><description><![CDATA[Normally, this would not be a problem; ActivityPub2, the protocol that powers Mastodon and other fediverse software, is very resilient to outages, and most implementations have plenty of built-in mechanisms like exponential backoff and so forth to get their neighbors up to date when they come back online. This particular outage, however, coincided with a huge amount of traffic, so when the server did come back online, there were many tens of thousands of messages waiting for it. Each of these messages necessitates a Sidekiq task which integrates it into the database, users’ timelines and notification lists, and so forth.

Sidekiq did not succeed in handling this load.

A screenshot from the Weirder Earth Sidekiq dashboard, showing processed and failed jobs over time. Created and edited by Packbats.
Users began to experience multi-hour delays in incoming federation, though outgoing federation was unaffected. To users of other instances, nothing was wrong; weirder.earth posts showed up within seconds, or about two minutes at the worst. Even to weirder.earth users, the web interface worked perfectly well; it’s just that there was little new content to populate it.]]></description>
<dc:subject>scalability database concurrency society</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:janpeuker/b:9eb03cbb3752/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:scalability"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:database"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:concurrency"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:society"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="https://www.orwellfoundation.com/the-orwell-foundation/orwell/essays-and-other-works/notes-on-nationalism/">
    <title>Notes on Nationalism | The Orwell Foundation</title>
    <dc:date>2022-03-06T14:05:47+00:00</dc:date>
    <link>https://www.orwellfoundation.com/the-orwell-foundation/orwell/essays-and-other-works/notes-on-nationalism/</link>
    <dc:creator>janpeuker</dc:creator><description><![CDATA[By ‘nationalism’ I mean first of all the habit of assuming that human beings can be classified like insects and that whole blocks of millions or tens of millions of people can be confidently labelled ‘good’ or ‘bad’.[1] But secondly ­– and this is much more important – I mean the habit of identifying oneself with a single nation or other unit, placing it beyond good and evil and recognizing no other duty than that of advancing its interests. Nationalism is not to be confused with patriotism. Both words are normally used in so vague a way that any definition is liable to be challenged, but one must draw a distinction between them, since two different and even opposing ideas are involved. By ‘patriotism’ I mean devotion to a particular place and a particular way of life, which one believes to be the best in the world but has no wish to force on other people. ]]></description>
<dc:subject>history literature politics philosophy</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:janpeuker/b:21cfdc7f58e2/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:history"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:literature"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:politics"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:philosophy"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="https://rework.withgoogle.com/print/guides/5721312655835136/">
    <title>re:Work - Team Management Project Aristotle Oxygen</title>
    <dc:date>2021-12-22T02:52:32+00:00</dc:date>
    <link>https://rework.withgoogle.com/print/guides/5721312655835136/</link>
    <dc:creator>janpeuker</dc:creator><description><![CDATA[The researchers found that what really mattered was less about who is on the team, and more about how the team worked together. In order of importance:

Psychological safety: Psychological safety refers to an individual’s perception of the consequences of taking an interpersonal risk or a belief that a team is safe for risk taking in the face of being seen as ignorant, incompetent, negative, or disruptive. In a team with high psychological safety, teammates feel safe to take risks around their team members. They feel confident that no one on the team will embarrass or punish anyone else for admitting a mistake, asking a question, or offering a new idea.

Dependability: On dependable teams, members reliably complete quality work on time (vs the opposite - shirking responsibilities).

Structure and clarity: An individual’s understanding of job expectations, the process for fulfilling these expectations, and the consequences of one’s performance are important for team effectiveness. Goals can be set at the individual or group level, and must be specific, challenging, and attainable. Google often uses Objectives and Key Results (OKRs) to help set and communicate short and long term goals.

Meaning: Finding a sense of purpose in either the work itself or the output is important for team effectiveness. The meaning of work is personal and can vary: financial security, supporting family, helping the team succeed, or self-expression for each individual, for example.

Impact: The results of one’s work, the subjective judgement that your work is making a difference, is important for teams. Seeing that one’s work is contributing to the organization’s goals can help reveal impact.]]></description>
<dc:subject>management culture google research best-of model consulting</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:janpeuker/b:ce5e144aa718/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:management"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:culture"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:google"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:research"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:best-of"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:model"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:consulting"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="https://cloud.google.com/architecture/devops/devops-tech-code-maintainability">
    <title>DevOps tech: Code maintainability  |  Google Cloud</title>
    <dc:date>2021-12-16T10:19:22+00:00</dc:date>
    <link>https://cloud.google.com/architecture/devops/devops-tech-code-maintainability</link>
    <dc:creator>janpeuker</dc:creator><description><![CDATA[Using these tools, large-scale refactorings that change multiple parts of the codebase are relatively easy to perform and can be done atomically. Google has built tooling that further simplifies and automates the process of making changes that impact significant sections of the codebase. Google tooling includes a build system called Blaze that is used to build and test any changes, including dependencies, from source. (Parts of Blaze were released in the form of the open source tool Bazel.) It's easy for anyone in Google to discover and propose changes to any part of Google, including its infrastructure configuration which is also kept in the same monolithic repository. Code sharing and reuse is straightforward.

Google also has controls in place to manage dependencies on open source software. First, all open source software used at Google must have its source checked in to Google's monolithic repository. Second, only one version of a given library can be checked in to source control at any time. Third, all software is statically linked and built from source. Finally, any time there is a change in the source code of a library, it triggers rebuilds and automated tests for all software which consumes that dependency.

These controls, combined with Google's powerful CI infrastructure, makes it easy to keep our production systems up-to-date with new versions of dependencies. They also help ensure that all systems use consistent versions of a given library (removing the possibility of "diamond dependency" hell whereby a product relies on two components that each, in turn, rely on different versions of a common library, making the product impossible to build.)

The trade-off from Google's approach to managing dependencies on external code is that it becomes harder to add new dependencies (one of the key outcomes of code maintainability). Any new dependency must have its source code checked into Google's monolithic repository, which means the code must be reviewed and tested both initially and as part of any upgrades. However, this level of rigor helps prevent code with security vulnerabilities making it into Google's products, and ensures that all dependencies have clearly designated maintainers.]]></description>
<dc:subject>devops engineering quality google reference</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:janpeuker/b:ce41f23e3fa2/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:devops"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:engineering"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:quality"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:google"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:reference"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="https://jvns.ca/blog/2021/12/15/mess-with-dns/">
    <title>New tool: Mess with DNS!</title>
    <dc:date>2021-12-16T00:42:51+00:00</dc:date>
    <link>https://jvns.ca/blog/2021/12/15/mess-with-dns/</link>
    <dc:creator>janpeuker</dc:creator><description><![CDATA[I built a new tool where you can experiment with DNS called Mess With DNS! It's at .

I made this with @omarieclaire, and there's a blog post about how we built it here: . Here's a gif: ]]></description>
<dc:subject>internet learning networking</dc:subject>
<dc:source>https://twitter.com/</dc:source>
<dc:identifier>https://pinboard.in/u:janpeuker/b:3bce77041687/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:internet"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:learning"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:networking"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="https://twitter.com/ShopifyEng/status/1465806691543531525">
    <title>Shopify Engineering on Twitter: &quot;2021 was our biggest Black Friday Cyber Monday ever! Together with our friends at @GoogleCloud we achieved near-perfect uptime while averaging ~30TB/min of egress traffic across our infrastructure. That’s a massive ~43PB</title>
    <dc:date>2021-12-02T04:43:10+00:00</dc:date>
    <link>https://twitter.com/ShopifyEng/status/1465806691543531525</link>
    <dc:creator>janpeuker</dc:creator><description><![CDATA[2021 was our biggest Black Friday Cyber Monday ever! Together with our friends at 
@GoogleCloud
 we achieved near-perfect uptime while averaging ~30TB/min of egress traffic across our infrastructure. That’s a massive ~43PB/day!

Here are some of the most interesting stats ]]></description>
<dc:subject>performance scalability reference cloud</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:janpeuker/b:10a72556beef/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:performance"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:scalability"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:reference"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:cloud"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="https://eng.uber.com/building-ubers-fulfillment-platform/">
    <title>Building Uber’s Fulfillment Platform for Planet-Scale using Google Cloud Spanner</title>
    <dc:date>2021-09-29T20:59:27+00:00</dc:date>
    <link>https://eng.uber.com/building-ubers-fulfillment-platform/</link>
    <dc:creator>janpeuker</dc:creator><description><![CDATA[Building Uber’s Fulfillment Platform for Planet-Scale using Google Cloud Spanner  < ginormous post from the @UberEng team that looks at how they used and extended @googlecloud Spanner for their architecture ]]></description>
<dc:subject>database scalability concurrency networking cloud</dc:subject>
<dc:source>https://twitter.com/</dc:source>
<dc:identifier>https://pinboard.in/u:janpeuker/b:f8cfc8f9e900/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:database"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:scalability"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:concurrency"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:networking"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:cloud"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="https://locusmag.com/2020/11/cory-doctorow-past-performance-is-not-indicative-of-future-results/">
    <title>Cory Doctorow: Past Performance is Not Indicative of Future Results – Locus Online</title>
    <dc:date>2021-08-01T10:03:17+00:00</dc:date>
    <link>https://locusmag.com/2020/11/cory-doctorow-past-performance-is-not-indicative-of-future-results/</link>
    <dc:creator>janpeuker</dc:creator><description><![CDATA[The problems of theory-free statistical inference go far beyond hallucinat­ing faces in the snow. Anyone who’s ever taken a basic stats course knows that “correlation isn’t causation.” For example, maybe the reason cops find more crime in Black neighborhoods because they harass Black people more with pretextual stops and searches that give them the basis to unfairly charge them, a process that leads to many unjust guilty pleas because the system is rigged to railroad people into pleading guilty rather than fighting charges.

Understanding that relationship requires “thick description” – an anthro­pologist’s term for paying close attention to the qualitative experience of the subjects of a data-set. Clifford Geertz’s classic essay of the same name talks about the time he witnessed one of his subjects wink at the other, and he wasn’t able to determine whether it was flirtation, aggression, a tic, or dust in the eye. The only way to find out was to go and talk to both people and uncover the qualitative, internal, uncomputable parts of the experience.

Quantitative disciplines are notorious for incinerating the qualitative ele­ments on the basis that they can’t be subjected to mathematical analysis. What’s left behind is a quantitative residue of dubious value… but at least you can do math with it. It’s the statistical equivalent to looking for your keys under a streetlight because it’s too dark where you dropped them.]]></description>
<dc:subject>ai bias society Emergence</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:janpeuker/b:2145e32ac19b/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:ai"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:bias"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:society"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:Emergence"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="https://blog.twitter.com/engineering/en_us/topics/insights/2021/algorithmic-bias-bounty-challenge">
    <title>Introducing Twitter’s first algorithmic bias bounty challenge</title>
    <dc:date>2021-07-31T01:41:13+00:00</dc:date>
    <link>https://blog.twitter.com/engineering/en_us/topics/insights/2021/algorithmic-bias-bounty-challenge</link>
    <dc:creator>janpeuker</dc:creator><description><![CDATA[We’re inspired by how the research and hacker communities helped the security field establish best practices for identifying and mitigating vulnerabilities in order to protect the public. We want to cultivate a similar community, focused on ML ethics, to help us identify a broader range of issues than we would be able to on our own. With this challenge we aim to set a precedent at Twitter, and in the industry, for proactive and collective identification of algorithmic harms.
For this challenge, we are re-sharing our saliency model and the code used to generate a crop of an image given a predicted maximally salient point  and asking participants to build their own  assessment. Successful entries will consider both quantitative and qualitative methods in their approach. For more details on the challenge, including how to enter and the rubric we’ll use to score entries, visit the submission page on HackerOne. Aiding us in reviewing entries will be our esteemed panel of judges: Ariel Herbert-Voss, Matt Mitchell, Peiter “Mudge” Zatko, and Patrick Hall.  ]]></description>
<dc:subject>security ai opensource</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:janpeuker/b:50a73a8673cf/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:security"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:ai"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:opensource"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="https://www.todayonline.com/singapore/study-finds-clustering-races-some-neighbourhoods-largely-due-purchasing-power-disparity">
    <title>Study finds ‘clustering’ of races in some neighbourhoods largely due to purchasing power disparity - TODAY</title>
    <dc:date>2021-07-25T12:14:19+00:00</dc:date>
    <link>https://www.todayonline.com/singapore/study-finds-clustering-races-some-neighbourhoods-largely-due-purchasing-power-disparity</link>
    <dc:creator>janpeuker</dc:creator><description><![CDATA[For instance, Chinese households exceeded 90 per cent in neighbourhoods in Hougang New Town while Malay households exceeded 30 per cent in neighbourhoods in Bedok and Tampines.

Under the policy, the proportion of flats in each HDB block and neighbourhood that can be owned by households of each ethnic group is capped.

When the EIP was first introduced, the limit for each block was capped at 87 per cent for Chinese, 25 per cent for Malays and 13 per cent for Indians and other races. At a neighbourhood level, this quota was 84 per cent for Chinese, 22 per cent for Malays and 10 per cent for Indians and other races.]]></description>
<dc:subject>society urbanism asia</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:janpeuker/b:54864688ac8e/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:society"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:urbanism"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:asia"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="https://github.com/ossu/computer-science">
    <title>GitHub - ossu/computer-science: Path to a free self-taught education in Computer Science!</title>
    <dc:date>2021-06-07T12:32:25+00:00</dc:date>
    <link>https://github.com/ossu/computer-science</link>
    <dc:creator>janpeuker</dc:creator><description><![CDATA[Courses must:

Be open for enrollment
Run regularly (ideally in self-paced format, otherwise running multiple times per year)
Be of generally high quality in teaching materials and pedagogical principles
Match the curricular standards of the CS 2013: Curriculum Guidelines for Undergraduate Degree Programs in Computer Science
When no course meets the above criteria, the coursework is supplemented with a book. When there are courses or books that don't fit into the curriculum but are otherwise of high quality, they belong in extras/courses or extras/readings.]]></description>
<dc:subject>learning engineering research opensource best-of reference</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:janpeuker/b:20fa57fb833a/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:learning"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:engineering"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:research"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:opensource"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:best-of"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:reference"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="https://skamille.medium.com/an-incomplete-list-of-skills-senior-engineers-need-beyond-coding-8ed4a521b29f">
    <title>An incomplete list of skills senior engineers need, beyond coding</title>
    <dc:date>2021-06-06T21:27:52+00:00</dc:date>
    <link>https://skamille.medium.com/an-incomplete-list-of-skills-senior-engineers-need-beyond-coding-8ed4a521b29f</link>
    <dc:creator>janpeuker</dc:creator><description><![CDATA[Instead of a tweetstorm, I decided to write a listicle of various non-coding traits that are important for senior engineers. Inspired by conversations with @polotek and others

...

How to teach another engineer to care about that thing you really care about (operations, correctness, testing, code quality, performance, simplicity, etc)
How to communicate project status to stakeholders
How to convince management that they need to invest in a non-trivial technical project
How to build software while delivering incremental value in the process
How to craft a project proposal, socialize it, and get buy-in to execute it
How to repeat yourself enough that people start to listen
How to pick your battles]]></description>
<dc:subject>engineering management</dc:subject>
<dc:source>https://twitter.com/</dc:source>
<dc:identifier>https://pinboard.in/u:janpeuker/b:318ef675080b/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:engineering"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:management"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="https://stripe.com/en-sg/atlas/guides/scaling-eng">
    <title>Stripe Atlas: Guide to scaling engineering organizations</title>
    <dc:date>2021-04-21T08:19:57+00:00</dc:date>
    <link>https://stripe.com/en-sg/atlas/guides/scaling-eng</link>
    <dc:creator>janpeuker</dc:creator><description><![CDATA[The design of our interview process is drawn from industry studies and our own best practices. Our questions seek to understand how people approach real world problems, rather than testing for esoteric skills you might demonstrate on a whiteboard. During the Bug Squash engineering interview, candidates and interviewers sit side-by-side to solve a real historical bug in an open-source project while working in the candidate’s programming language of choice. For engineering managers, we use Team Role Plays to simulate working through issues during a one-on-one conversation with a teammate.
...
We started with a small number of roles (infrastructure, front-end engineering) to understand how to retool our recruiting operations one at a time. We now hire across many different pipelines, ranging from Android to machine learning to security. These changes have steadily increased our offer acceptance rates and we now have specialists in every pipeline. Each detail affects every part of the recruiting process, including:

Posting different job descriptions publicly
Deciding which recruiters are staffed against which roles
Creating specialized interview questions, rubrics, and candidate preparation guides for each role
We recently launched Elements, our UI toolkit for payment flows. The Elements team benefited from the collective experience of specialists spanning security, front-end engineering, and user experience to tackle an extensive list of challenges: secure isolation of card details with iframes, resolving browser-specific bugs, adding internationalization, incorporating modern JavaScript API design, and optimizing conversion flows.]]></description>
<dc:subject>engineering interview productivity management payment</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:janpeuker/b:9ac97ea7275b/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:engineering"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:interview"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:productivity"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:management"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:payment"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="https://www.orgonomyproductions.info/notes/notes/2021/02/27/TechPosersBauhaus.html">
    <title>Tech posers of the Bauhaus</title>
    <dc:date>2021-03-06T13:06:00+00:00</dc:date>
    <link>https://www.orgonomyproductions.info/notes/notes/2021/02/27/TechPosersBauhaus.html</link>
    <dc:creator>janpeuker</dc:creator><description><![CDATA[For instance, in the metal workshop under Moholy-Nagy, students would handmade prototypes with a style they thought would be easy to reproduce industrially. For instance using spheres, cylinders and other basic shapes. Except that due to their ignorance of industrial processes, those objects were hard to make in a mass-production facility.

But the strongest critique of the Bauhaus lack of technological knowledge was Buckminster Fuller. Fuller was familiar with the work of the Bauhaus due to the Black Mountain College in the US, where he and other former Bauhaus tutors were teaching. According to him, the ‘International Style’ brought to the US by the Bauhaus, simple replaced the previous decorative style with a new simplified one made of basic shapes and colours. A new exterior, but that was leaving unchanged the structural and functional elements of the building.]]></description>
<dc:subject>design engineering innovation</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:janpeuker/b:a6bd04b62f98/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:design"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:engineering"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:innovation"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="https://cloud.google.com/blog/products/identity-security/delivering-the-industrys-most-trusted-cloud">
    <title>Google Cloud is delivering the industry’s most Trusted Cloud | Google Cloud Blog</title>
    <dc:date>2021-03-02T14:40:45+00:00</dc:date>
    <link>https://cloud.google.com/blog/products/identity-security/delivering-the-industrys-most-trusted-cloud</link>
    <dc:creator>janpeuker</dc:creator><description><![CDATA[Introducing our Trusted Cloud requirements

We believe that the promise of a Trusted Cloud is built on three pillars:

A secure platform that delivers transparency and enables sovereignty: We provide a secure foundation that you can verify and independently control. It enables you to move from your own data centers to the cloud while maintaining control over data location and operations, and helps ensure compliance with local regulations.

A proven zero-trust architecture: We offer battle-tested technology that comprehensively protects data against the many types of threats that Google sees and defends against every day. As a result, you can operate with confidence that threats from ransomware, account takeovers, bots, phishing, and even more advanced attacks are minimized, detectable, and recoverable. 

Shared fate, not shared responsibility: We operate in a shared-fate model for risk management in conjunction with our customers. We believe that it's our responsibility to be active partners as our customers deploy securely on our platform, not delineators of where our responsibility ends. We stand with you from day one, helping you implement best practices for safely migrating to and operating in our Trusted Cloud.
...
Moving toward shared-fate for risk management in the cloud 
Getting security right in the cloud can be challenging, and customers have been responsible for building effective cloud security programs on their own. The shared responsibility model for security that has underpinned cloud computing since its earliest days dictates that the cloud provider is responsible for securing the underlying foundation, while the customer is responsible for secure configuration, data protection, access permissions and much more. The result is that enterprises have viewed the cloud as a risk to be managed instead of a platform for managing risk. With Google’s Trusted Cloud, we provide unique tools, detailed guidance, and best practices to reduce customer risk from day one. 

You receive detailed guidance and resources to optimize your security on our platform, have tools to manage ongoing security and compliance in our Trusted Cloud, and starting today have simplified access to cyber insurance, with pricing linked directly to security, through the Risk Protection Program. Google Cloud’s collaboration with two of the world’s leading insurance providers, Allianz Global Corporate and Specialty (AGCS) and Munich Re, delivers benefits like reduced risk and the potential to reduce cost with specialized cyber coverage designed exclusively for Google Cloud customers.]]></description>
<dc:subject>cloud security networking resilience</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:janpeuker/b:d92ee8ae0357/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:cloud"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:security"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:networking"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:resilience"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="https://engineering.atspotify.com/2021/02/11/how-spotify-optimized-the-largest-dataflow-job-ever-for-wrapped-2020/">
    <title>How Spotify Optimized the Largest Dataflow Job Ever for Wrapped 2020 : Spotify Engineering</title>
    <dc:date>2021-02-12T11:20:20+00:00</dc:date>
    <link>https://engineering.atspotify.com/2021/02/11/how-spotify-optimized-the-largest-dataflow-job-ever-for-wrapped-2020/</link>
    <dc:creator>janpeuker</dc:creator><description><![CDATA[for Wrapped 2020 using a technique called Sort Merge Bucket (SMB) join.
...
Design and Implementation
The majority of the data pipelines at Spotify are written in Scio, a Scala API for Apache Beam, and run on the Google Cloud Dataflow service. We implemented SMB in Java to be closer to the native Beam SDK (and even wrote and collaborated on a design document with the Beam community), and provide Scala syntactic sugar in Scio like many other I/Os. The design is modularized into the main components listed below — we’ll start with the two top-level SMB PTransforms — the write and read operations SortedBucketSink and SortedBucketSource.
...
This ended up being a huge cost savings for us in this year’s Wrapped project. By leveraging SMB, we managed to join roughly a total of 1PB data without using conventional shuffle or Bigtable. We estimate around a 50% decrease in Dataflow costs this year compared to previous years’ Bigtable-based approach. Additionally, we avoided scaling the Bigtable cluster up two to three times its normal capacity (up to around 1,500 nodes at peak) to support the heavy Wrapped jobs. This was a huge win in this year’s campaign as we were able to bring a wonderful experience in a more cost effective way than ever before.]]></description>
<dc:subject>blog messaging analytics scalability performance</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:janpeuker/b:b70d23d243f3/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:blog"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:messaging"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:analytics"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:scalability"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:performance"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="https://matklad.github.io//2021/02/06/ARCHITECTURE.md.html">
    <title>ARCHITECTURE.md</title>
    <dc:date>2021-02-07T12:18:00+00:00</dc:date>
    <link>https://matklad.github.io//2021/02/06/ARCHITECTURE.md.html</link>
    <dc:creator>janpeuker</dc:creator><description><![CDATA[I have experience with both contributing to and maintaining open-source projects. One of the lessons I’ve learned is that the biggest difference between an occasional contributor and a core developer lies in the knowledge about the physical architecture of the project. Roughly, it takes 2x more time to write a patch if you are unfamiliar with the project, but it takes 10x more time to figure out where you should change the code. This difference might be hard to perceive if you’ve been working with the project for a while. If I am new to a code base, I read each file as a sequence of logical chunks specified in some pseudo-random order. If I’ve made significant contributions before, the perception is quite different. I have a mental map of the code in my head, so I no longer read sequentially. Instead, I just jump to where the thing should be, and, if it is not there, I move it. Mental map is the source of truth.
I find ARCHITECTURE file to be a low-effort high-leverage way to bridge this gap. As the name suggest, this file should describe the high-level architecture of the project. Keep it short: every recurring contributor will have to read it. Additionally, the shorter it is, the less likely it will be invalidated by some future change. This is the main rule of thumb for ARCHITECTURE — specify only things which are unlikely to frequently change. Don’t try to keep it synchronized with code. Instead, revisit it a couple of times a year.]]></description>
<dc:subject>blog documentation opensource Architecture standard reference</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:janpeuker/b:e1a657da53d4/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:blog"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:documentation"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:opensource"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:Architecture"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:standard"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:reference"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="https://www.microsoft.com/en-us/research/blog/lambda-the-ultimatae-excel-worksheet-function/">
    <title>LAMBDA: The ultimate Excel worksheet function - Microsoft Research</title>
    <dc:date>2021-01-26T15:24:16+00:00</dc:date>
    <link>https://www.microsoft.com/en-us/research/blog/lambda-the-ultimatae-excel-worksheet-function/</link>
    <dc:creator>janpeuker</dc:creator><description><![CDATA[In December 2020, we announced LAMBDA, which allows users to define new functions written in Excel’s own formula language, directly addressing our second challenge. These newly defined functions can call other LAMBDA-defined functions, to arbitrary depth, even recursively. With LAMBDA, Excel has become Turing-complete. You can now, in principle, write any computation in the Excel formula language. LAMBDA is available to members of the Insiders: Beta program. The initial release has some implementation restrictions that we expect to lift in the future. We discussed LAMBDA and some of our research on spreadsheets in a sponsored video presented at POPL 2021.


The power of LAMBDA
Researchers have known since the 1960s that Church’s lambda notation is a foundation for a wide range of programming languages and hence is a highly expressive programming construct in its own right. Its incorporation into Excel represents a qualitative shift, not just an incremental change.

To illustrate the power of LAMBDA, here’s a function written using the notation to compute the length of the hypotenuse of a right-angled triangle:]]></description>
<dc:subject>functional usability productivity serverless</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:janpeuker/b:1af8c425c2cc/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:functional"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:usability"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:productivity"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:serverless"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="https://opencollective.com/open-web-docs/updates/introducing-open-web-docs">
    <title>Open Web Docs - Open Collective</title>
    <dc:date>2021-01-26T09:18:14+00:00</dc:date>
    <link>https://opencollective.com/open-web-docs/updates/introducing-open-web-docs</link>
    <dc:creator>janpeuker</dc:creator><description><![CDATA[Open Web Docs was created to ensure the long-term health of web platform documentation on de facto standard resources like MDN Web Docs, independently of any single vendor or organization. Through full-time staff, community management, and our network of partner organizations, we enable these resources to better maintain and sustain documentation of core web platform technologies. Rather than create new documentation sites, Open Web Docs is committed to improving existing platforms through our contributions. 

Florian Scholz joined the project in November 2020 as our Content Lead, working with stakeholders to define initial workstreams. Our 2021 priorities include working with Mozilla’s MDN writers and engineers to support the recent infrastructure transition and to prioritize and move forward with key documentation work, developing a community of contributors around core web technology documentation, browser compatibility data, and improving JavaScript documentation. Additional hires will be announced soon, and those interested can follow our updates at opencollective.com/open-web-docs, https://github.com/openwebdocs and @OpenWebDocs.

Open Web Docs staff are supported by founding sponsors Coil, Google and Microsoft, with additional financial support from Igalia and generous backers on Open Source Collective. Mozilla, Samsung, and W3C provide additional support and participation. Participating orgs are collaborating on content work via weekly editorial and OWD steering committee meetings, and there are plans to create a shared process as we get deeper into the work.

]]></description>
<dc:subject>documentation internet opensource</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:janpeuker/b:db692e41d60b/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:documentation"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:internet"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:opensource"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="https://cloud.google.com/blog/products/operations/on-the-road-to-sre-with-cloud-operations-sandbox">
    <title>On the road to SRE with Cloud Operations Sandbox | Google Cloud Blog</title>
    <dc:date>2021-01-25T01:23:55+00:00</dc:date>
    <link>https://cloud.google.com/blog/products/operations/on-the-road-to-sre-with-cloud-operations-sandbox</link>
    <dc:creator>janpeuker</dc:creator><description><![CDATA[This creates a new Google Cloud project. Within that project, a Terraform script creates a Google Kubernetes Engine (GKE) cluster and deploys a sample application to it. The microservices that make up the demo app are pre-instrumented with logging, monitoring, tracing, debugging and profiling as appropriate for each microservices language runtime. As such, sending traffic to the demo app generates telemetry that can be useful for diagnosing the cloud service’s operation. In order to generate production-like traffic to the demo app, an automated script deploys a synthetic load generator in a different geo-location than the demo app.
...
It creates 11 custom dashboards (one for each microservice) to illustrate the four golden signals of monitoring as described in Google’s SRE book.

creates 11 custom dashboards.jpg
It also adds and automatically configures uptime checks, service monitoring (SLOs and SLIs), log-based metrics, alerting policies and more.]]></description>
<dc:subject>devops learning cloud</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:janpeuker/b:8fee36471578/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:devops"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:learning"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:cloud"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="https://www.thoughtworks.com/insights/articles/enduring-techniques-technology-radar">
    <title>Enduring Techniques from the Technology Radar | ThoughtWorks</title>
    <dc:date>2021-01-17T11:11:31+00:00</dc:date>
    <link>https://www.thoughtworks.com/insights/articles/enduring-techniques-technology-radar</link>
    <dc:creator>janpeuker</dc:creator><description><![CDATA[Agile IT
The core to Agile IT is of course Agile software delivery, and there’s a large amount of content on this from both ThoughtWorks and the wider industry. From the Radar, specific techniques we think important include:



Test at the appropriate level, incorporating unit, functional, acceptance and integration tests to build an effective test pyramid, rather than testing everything through UI testing which is often slow and brittle.
Coding Architects who work with teams and actually write software, rather than existing as “the Architecture Department” in an ivory tower pontificating on the best ways to write software. This helps architects understand the full context of their recommendations and achieve their long-term technical vision.
Lightweight Architecture Decision Records provide a useful paper-trail on major decisions without becoming yet another piece of documentation on a wiki that no-one reads.
While code is malleable, the data storage layers are traditionally less so. Evolutionary database rejects the notion that a database schema is fixed and hard to change and applies refactoring techniques at the database level. This allows the DB to evolve in a similar way to code and avoids a schema that is mismatched to the application that uses it.
Software architecture has often been about predicting the future, but anyone who witnessed the explosion of Docker, Kubernetes, or the JavaScript-eats-the-world phenomenon will realize that making predictions further than about six months out is very difficult. Evolutionary Architecture accepts this reality and instead focuses on creating systems that are amenable to change in the future. Creating architectural fitness functions to describe the ideal system characteristics is the engine that drives this overall technique.
A significant trend across modern organizations, even beyond the IT department, is to treat assets such as software and services as products, rather than projects. This is a deep topic and a good place to start is Sriram Narayan’s overview article. A follow-on technique is to applying product management to internal platforms, and Evan Bottcher’s article has good detail on what this might mean for you.
We’ve gained more understanding over the last few years about how Conway’s Law applies across an organization and how it affects the systems and structures that we build. But what if you don’t have the architecture you want? One strategy is to apply the Inverse Conway Maneuver, structure teams to reflect the systems you aspire to have, and let Conway’s Law restructure those systems for you.]]></description>
<dc:subject>agile devops consulting Architecture history reference</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:janpeuker/b:bcbd03dde57d/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:agile"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:devops"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:consulting"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:Architecture"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:history"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:reference"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="https://basecodefieldguide.com/">
    <title>BaseCode - a field guide to writing code that lasts</title>
    <dc:date>2021-01-16T04:33:47+00:00</dc:date>
    <link>https://basecodefieldguide.com/</link>
    <dc:creator>janpeuker</dc:creator><description><![CDATA[During that time I've worked on hundreds of projects with dozens of teams. I found the most important quality of lasting code is readability.

When I first started writing code I just wrote code that worked. Who cares as long as it works? Years later, I went to great lengths to ensure my code adhered to all the best practices.

We know our code is too complex. This is easy to realize, but hard to avoid. We're too quick to dismiss qualities like readability and accept complexity as necessary..

We need to get back to the basics of writing code for other humans. This is the goal of BaseCode.

]]></description>
<dc:subject>architecture quality patterns blog podcast</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:janpeuker/b:a464b79ea766/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:architecture"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:quality"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:patterns"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:blog"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:podcast"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="https://www.siddharthsarda.com/p/developer-progression-as-a-function">
    <title>Developer Progression as a function of navigating complexity - Yak Shaving</title>
    <dc:date>2021-01-10T07:54:10+00:00</dc:date>
    <link>https://www.siddharthsarda.com/p/developer-progression-as-a-function</link>
    <dc:creator>janpeuker</dc:creator><description><![CDATA[Completely Complex

The abstraction that you operate in now is the entire organisation or in bigger companies, an entire division or department. Your focus is primarily on what to build rather than the how. You will be doing a lot of writing, since you need to communicate at scale.

According to the paper, a completely complex system is a dynamic process, which is constantly in a state of flux. Any patterns here are emergent. Changes have both short term and long term repercussions. You also realise that the system is self organised for the most part. This sounds a lot like the modern organisation. At this scope you are typically operating as the technical leadership. You need to be able to form technical strategies grounded in the needs of the business. 

Books for this level

Wardley Maps

Enterprise Architecture as Strategy

So to summarise, this is what we end up with as a progression plan for developers over varying degrees of complexity. 


There is a pithy saying - “All models are wrong, some are useful.” The model I have described here is not perfect. The skills and responsibilities needed at different levels are at a continuum, not discrete. I merely aim to expose you to the different abstractions that engineers operate in based on where they are in their career. I hope you found this useful.

If you are here, follow me on twitter.]]></description>
<dc:subject>Architecture Emergence book learning engineering</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:janpeuker/b:b73652e4a71a/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:Architecture"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:Emergence"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:book"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:learning"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:engineering"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="https://github.com/kdeldycke/awesome-falsehood">
    <title>GitHub - kdeldycke/awesome-falsehood: 😱 Falsehoods Programmers Believe in</title>
    <dc:date>2021-01-10T05:34:28+00:00</dc:date>
    <link>https://github.com/kdeldycke/awesome-falsehood</link>
    <dc:creator>janpeuker</dc:creator><description><![CDATA[The logic of the world is prior to all truth and falsehood.
— Ludwig Wittgenstein[1]

Falsehood articles are a form of commentary on a particular subject, and are appreciated by the developer community at large for their effectiveness and terseness. They're a convenient written form to approach an unfamiliar domain by dispelling myths, point out common pitfalls, show inconsistencies and subtleties.]]></description>
<dc:subject>culture bias engineering failure</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:janpeuker/b:d5061aac0891/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:culture"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:bias"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:engineering"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:failure"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="https://jeffhuang.com/best_paper_awards/">
    <title>Best paper awards at AAAI, ACL, CHI, CIKM, CVPR, FOCS, FSE, ICCV, ICML, ICSE, IJCAI, INFOCOM, KDD, MOBICOM, NEURIPS, NSDI, OSDI, PLDI, PODS, S&amp;P, SIGCOMM, SIGIR, SIGMETRICS, SIGMOD, SODA, SOSP, STOC, UIST, VLDB, WWW</title>
    <dc:date>2021-01-04T11:12:18+00:00</dc:date>
    <link>https://jeffhuang.com/best_paper_awards/</link>
    <dc:creator>janpeuker</dc:creator><dc:subject>research engineering</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:janpeuker/b:1e6686e24507/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:research"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:engineering"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="http://www.aosabook.org/en/">
    <title>The Architecture of Open Source Applications</title>
    <dc:date>2021-01-04T10:56:35+00:00</dc:date>
    <link>http://www.aosabook.org/en/</link>
    <dc:creator>janpeuker</dc:creator><description><![CDATA[The Architecture of Open Source Applications
Architects look at thousands of buildings during their training, and study critiques of those buildings written by masters. In contrast, most software developers only ever get to know a handful of large programs well—usually programs they wrote themselves—and never study the great programs of history. As a result, they repeat one another's mistakes rather than building on one another's successes.

Our goal is to change that. In these two books, the authors of four dozen open source applications explain how their software is structured, and why. What are each program's major components? How do they interact? And what did their builders learn during their development? In answering these questions, the contributors to these books provide unique insights into how they think.

If you are a junior developer, and want to learn how your more experienced colleagues think, these books are the place to start. If you are an intermediate or senior developer, and want to see how your peers have solved hard design problems, these books can help you too.]]></description>
<dc:subject>Architecture book reference learning</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:janpeuker/b:854f59a4169e/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:Architecture"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:book"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:reference"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:learning"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="https://faculty.washington.edu/ajko/books/design-methods/#/">
    <title>Design Methods</title>
    <dc:date>2021-01-03T14:59:14+00:00</dc:date>
    <link>https://faculty.washington.edu/ajko/books/design-methods/#/</link>
    <dc:creator>janpeuker</dc:creator><description><![CDATA[Design Methods
by Amy J. Ko
After teaching design for many years, I longed for a simple, concise, and practical introduction to design for technically-minded people. In response, I’ve distilled my lectures from the past decade into these brief chapters. They don’t represent everything we know about design, and they certainly only represent my own stance on design, but my students have found them be accessible introduction to big ideas in design. I hope you enjoy! If you see something missing or wrong, submit an issue.

]]></description>
<dc:subject>design book reference</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:janpeuker/b:6525354f1bf2/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:design"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:book"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:reference"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="https://cloud.google.com/blog/products/containers-kubernetes/understanding-configuration-as-data-in-kubernetes">
    <title>Understanding Configuration as Data in Kubernetes | Google Cloud Blog</title>
    <dc:date>2020-12-27T08:56:18+00:00</dc:date>
    <link>https://cloud.google.com/blog/products/containers-kubernetes/understanding-configuration-as-data-in-kubernetes</link>
    <dc:creator>janpeuker</dc:creator><description><![CDATA[Instead of taking an imperative or procedural approach, Kubernetes relies on the notion of Configuration as Data, taking a declarative approach to deploying and managing cloud infrastructure as well as applications. You declare your desired state without specifying the precise actions or steps for how to achieve it. Every Kubernetes resource instance is defined by Configuration as Data expressed in YAML and JSON files. Creating a Deployment? Defining a Service? Setting a policy? It’s all Configuration as Data, and Kubernetes users have been in on the secret for the past six years. 
...
How do you start leveraging the KRM for managing Google Cloud resources? Last year, Google Cloud released Config Connector, which provides built-in controllers for Google Cloud resources. Config Connector lets you manage your Google Cloud infrastructure the same way you manage your Kubernetes applications—by defining your infrastructure configurations as data—reducing the complexity and cognitive load for your entire team.


Following our service example above, let’s say we want to deploy a Google Cloud Redis instance as a backing memory store for our service. We can use KRM by creating a simple YAML representation that is 
consistent with the rest of our application:]]></description>
<dc:subject>devops blog container</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:janpeuker/b:1b8f0673d573/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:devops"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:blog"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:container"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="https://berthub.eu/articles/posts/reverse-engineering-source-code-of-the-biontech-pfizer-vaccine/">
    <title>Reverse Engineering the source code of the BioNTech/Pfizer SARS-CoV-2 Vaccine - Articles</title>
    <dc:date>2020-12-26T18:35:44+00:00</dc:date>
    <link>https://berthub.eu/articles/posts/reverse-engineering-source-code-of-the-biontech-pfizer-vaccine/</link>
    <dc:creator>janpeuker</dc:creator><description><![CDATA[Great explanation of Pfizer mRNA: ]]></description>
<dc:subject>biology engineering research health</dc:subject>
<dc:source>https://twitter.com/</dc:source>
<dc:identifier>https://pinboard.in/u:janpeuker/b:7a319499d74e/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:biology"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:engineering"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:research"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:health"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="https://www.brainpickings.org/2017/01/10/margaret-mead-work-leisure-creativity/">
    <title>Legendary Anthropologist Margaret Mead on Work, Leisure, and Creativity – Brain Pickings</title>
    <dc:date>2020-12-19T07:31:26+00:00</dc:date>
    <link>https://www.brainpickings.org/2017/01/10/margaret-mead-work-leisure-creativity/</link>
    <dc:creator>janpeuker</dc:creator><description><![CDATA[It was only in the middle of the twentieth century that German philosopher Josef Pieper could make his elegant case for why leisure is the basis of culture and creativity, before the modern cult of workaholism swiftly pulverized this fragile understanding into dust.

Just as psychology’s most influential study of creativity was gathering momentum at Stanford, the great anthropologist Margaret Mead (December 16, 1901–November 15, 1978) wrote a fascinating and immensely insightful piece titled “Work, Leisure, and Creativity” for the Winter 1960 issue of Daedalus
...
Writing at the blazing dawn of consumer culture — what Adam Curtis would later call “the century of the self” — and a decade before she envisioned a post-consumerist world in her magnificent conversation with James Baldwin, Mead considers the cultural conditioning that to this day imperils our ability to distinguish between productivity and creativity:

I should like first to question the usefulness of the simple dichotomy of work and leisure, with work being those things which man has to do to earn his daily bread, and leisure everything he does with the time that is left over. For if we follow this way of looking at life, peculiar to our own narrow tradition, we are then faced with placing such activities as the worship of the gods, or the performance of a tragedy, in either one category or the other.]]></description>
<dc:subject>culture book article psychology society</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:janpeuker/b:b7ecbddeb358/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:culture"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:book"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:article"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:psychology"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:society"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="http://rigaux.org/language-study/concepts-history.html">
    <title>History of programming languages concepts</title>
    <dc:date>2020-12-17T15:14:45+00:00</dc:date>
    <link>http://rigaux.org/language-study/concepts-history.html</link>
    <dc:creator>janpeuker</dc:creator><dc:subject>history engineering reference</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:janpeuker/b:a29ecdab5342/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:history"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:engineering"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:reference"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="https://justjavascript.com/">
    <title>Just JavaScript | A Course by Dan Abramov and Maggie Appleton</title>
    <dc:date>2020-12-06T12:04:24+00:00</dc:date>
    <link>https://justjavascript.com/</link>
    <dc:creator>janpeuker</dc:creator><dc:subject>javascript design learning</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:janpeuker/b:0b73aab3d58d/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:javascript"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:design"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:learning"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="https://cloud.google.com/blog/products/management-tools/sre-error-budgets-and-maintenance-windows">
    <title>SRE error budgets and maintenance windows | Google Cloud Blog</title>
    <dc:date>2020-11-22T07:18:56+00:00</dc:date>
    <link>https://cloud.google.com/blog/products/management-tools/sre-error-budgets-and-maintenance-windows</link>
    <dc:creator>janpeuker</dc:creator><description><![CDATA[Similar to deciding your SLO, scheduling a maintenance window is a business decision that requires taking into account the agreements you may have with your users, the technical limitations of your system, and the wellbeing of the people responsible for those systems. It’s inevitably a compromise.

The type of maintenance window that we are discussing in the rest of this post is the one that you, as a service provider, may perform and that affects your users directly, effectively causing a degradation of your service, or even a full outage.

How to choose your maintenance windows
In recent years, technologies like multithreaded processors, virtualization, and containerization have emerged. Using these paired with microservice architectures and good software development practices helps to reduce or completely eliminate the use of maintenance windows.
...
You can assume in this case that you have a maintenance window of ~15 hours a day. Should it burn through your error budget, then?

Let's remember the purpose of your error budget: It is a tool that helps identify when the reliability metrics for user journeys (your SLIs) have performed, over a period of time, at levels that are hurting your users.

In this scenario, users are not able to use the service outside of business hours. In fact, users most likely should not be able to interact with the service at all. So, effectively, there is no harm in having this service down, and over this period of time, the error budget should not be affected at all.]]></description>
<dc:subject>devops resilience</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:janpeuker/b:f46c8abf02d3/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:devops"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:resilience"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="https://www.cst.cam.ac.uk/teaching/2021/ConcDisSys">
    <title>Concurrent and Distributed Systems | Department of Computer Science and Technology</title>
    <dc:date>2020-11-19T13:36:37+00:00</dc:date>
    <link>https://www.cst.cam.ac.uk/teaching/2021/ConcDisSys</link>
    <dc:creator>janpeuker</dc:creator><description><![CDATA[This course considers two closely related topics, Concurrent Systems and Distributed Systems, over 16 lectures. The aim of the first half of the course is to introduce concurrency control concepts and their implications for system design and implementation. The aims of the latter half of the course are to study the fundamental characteristics of distributed systems, including their models and architectures; the implications for software design; some of the techniques that have been used to build them; and the resulting details of good distributed algorithms and applications.

Lectures: Concurrency
Introduction to concurrency, threads, and mutual exclusion. Introduction to concurrent systems; threads; interleaving; preemption; parallelism; execution orderings; processes and threads; kernel vs. user threads; M:N threads; atomicity; mutual exclusion; and mutual exclusion locks (mutexes).
]]></description>
<dc:subject>concurrency learning scalability</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:janpeuker/b:ae959285a253/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:concurrency"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:learning"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:scalability"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="https://projecttoproduct.org/the-book/">
    <title>The Book - Project To Product</title>
    <dc:date>2020-11-17T02:08:33+00:00</dc:date>
    <link>https://projecttoproduct.org/the-book/</link>
    <dc:creator>janpeuker</dc:creator><description><![CDATA[How to Survive and Thrive in the Age of Digital Disruption with the Flow Framework
In the Age of Software, will your business dominate and maintain relevance – or will it become a digital relic? Project to Product provides the prescriptive framework for surviving this age of digital disruption.
...
The Book
Project to Product introduces leaders to the missing framework needed to create a Value Stream Network — the technology equivalent of an advanced manufacturing line that comprises thousands of IT professionals.]]></description>
<dc:subject>devops Architecture agile model book</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:janpeuker/b:c4de9bfe5ecc/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:devops"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:Architecture"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:agile"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:model"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:book"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="https://cacm.acm.org/blogs/blog-cacm/248022-what-everyone-knows-and-what-no-one-knows/fulltext">
    <title>What Everyone Knows and What No One Knows | blog@CACM | Communications of the ACM</title>
    <dc:date>2020-10-18T07:49:15+00:00</dc:date>
    <link>https://cacm.acm.org/blogs/blog-cacm/248022-what-everyone-knows-and-what-no-one-knows/fulltext</link>
    <dc:creator>janpeuker</dc:creator><description><![CDATA[Initially, I was using different questions for different interviews, perhaps because of an unconscious fear of intellectual laziness, but I soon realized that this concern was silly; consistency is more important, making it possible to compare candidates. So I developed a medley of staple questions, with some variations to account for diversity (if you spot in the first few minutes that a candidate is ahead of the pack, you can try more advanced probes).
...
The answers to two of my standard questions particularly struck me. One is something that everyone in my sample of over 120 interviewees answers correctly; the other something that no one can answer.

The first one follows my request to name some design patterns. If the interviewee hesitates, I will coxswain him or her a bit. For example: do you know about MVC? Then a light goes on and the answer comes, Model-View Controller. Not just the expansion of the acronym: when I query further, I get a decent explanation. Well, not necessarily a deep one (I have since found out that if I present a concrete case of software architecture and ask whether a certain part is M, V, or C, the results are not always impressive), but let's not be too harsh; the basic idea is all I wanted in the interviews.

Now here is an idea that seems to have made it to the masses, from Ghana to California and in between. I hope Trygve Reenskaug, the inventor of MVC, is proudly reading this.

Another of my questions is about logic. Its statement is very simple:

Assume that A implies B. What can we say about `not A' and `not B'?

To me, this is about the same as asking "What is the value of 2 + 2?". It is not. In my entire set of interviews, I did not get a single correct answer.

]]></description>
<dc:subject>learning engineering philosophy interview</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:janpeuker/b:b7ff81dd3cf5/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:learning"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:engineering"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:philosophy"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:interview"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="https://mitpress.mit.edu/books/architecture-depends">
    <title>Architecture Depends | The MIT Press</title>
    <dc:date>2020-10-18T03:57:58+00:00</dc:date>
    <link>https://mitpress.mit.edu/books/architecture-depends</link>
    <dc:creator>janpeuker</dc:creator><description><![CDATA[Polemics and reflections on how to bridge the gap between what architecture actually is and what architects want it to be.

Architecture depends—on what? On people, time, politics, ethics, mess: the real world. Architecture, Jeremy Till argues with conviction in this engaging, sometimes pugnacious book, cannot help itself; it is dependent for its very existence on things outside itself. Despite the claims of autonomy, purity, and control that architects like to make about their practice, architecture is buffeted by uncertainty and contingency. Circumstances invariably intervene to upset the architect's best-laid plans—at every stage in the process, from design through construction to occupancy. Architects, however, tend to deny this, fearing contingency and preferring to pursue perfection. With Architecture Depends, architect and critic Jeremy Till offers a proposal for rescuing architects from themselves: a way to bridge the gap between what architecture actually is and what architects want it to be. Mixing anecdote, design, social theory, and personal experience, Till's writing is always accessible, moving freely between high and low registers, much like his suggestions for architecture itself.]]></description>
<dc:subject>Architecture philosophy Emergence book learning</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:janpeuker/b:475986673cb7/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:Architecture"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:philosophy"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:Emergence"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:book"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:learning"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="https://arxiv.org/abs/2010.06973">
    <title>[2010.06973] Neural Databases</title>
    <dc:date>2020-10-17T09:08:06+00:00</dc:date>
    <link>https://arxiv.org/abs/2010.06973</link>
    <dc:creator>janpeuker</dc:creator><description><![CDATA[In recent years, neural networks have shown impressive performance gains on long-standing AI problems, and in particular, answering queries from natural language text. These advances raise the question of whether they can be extended to a point where we can relax the fundamental assumption of database management, namely, that our data is represented as fields of a pre-defined schema.
This paper presents a first step in answering that question. We describe NeuralDB, a database system with no pre-defined schema, in which updates and queries are given in natural language. We develop query processing techniques that build on the primitives offered by the state of the art Natural Language Processing methods.
We begin by demonstrating that at the core, recent NLP transformers, powered by pre-trained language models, can answer select-project-join queries if they are given the exact set of relevant facts. However, they cannot scale to non-trivial databases and cannot perform aggregation queries. Based on these findings, we describe a NeuralDB architecture that runs multiple Neural SPJ operators in parallel, each with a set of database sentences that can produce one of the answers to the query. The result of these operators is fed to an aggregation operator if needed. We describe an algorithm that learns how to create the appropriate sets of facts to be fed into each of the Neural SPJ operators. Importantly, this algorithm can be trained by the Neural SPJ operator itself. We experimentally validate the accuracy of NeuralDB and its components, showing that we can answer queries over thousands of sentences with very high accuracy.]]></description>
<dc:subject>research database ai</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:janpeuker/b:0a95a3f70b54/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:research"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:database"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:ai"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="https://blog.interviewing.io/ive-conducted-over-600-technical-interviews-on-interviewing-io-here-are-5-common-problem-areas-ive-seen/">
    <title>I’ve conducted over 600 technical interviews on interviewing.io. Here are 5 common problem areas I’ve seen. - interviewing.io blog</title>
    <dc:date>2020-10-16T07:53:37+00:00</dc:date>
    <link>https://blog.interviewing.io/ive-conducted-over-600-technical-interviews-on-interviewing-io-here-are-5-common-problem-areas-ive-seen/</link>
    <dc:creator>janpeuker</dc:creator><description><![CDATA[“Hmm, I wonder if I could … … … no, never mind, I’ll just do this instead.”

Back to my bias for communication.

Interviewers want to know what’s going on in your thought process. It’s important that thwey know how you’re making decisions. How are you qualifying or disqualifying ideas? Why are you choosing to implement something in a particular way? Did you spot a potential problem in your code? What was it?

This missing information is a hidden treasure for your interviewer. It takes mere seconds to change your communication to something more like this:

“I wonder if … hmm … well, I was thinking about implementing this as a depth-first-search, but given a constraint around ___ I think a better approach might be ___, what do you think?”

That took maybe 2 or 3 extra seconds, and you’ve asked for my opinion or buy-in, we can consider possibilities together, and now we’re collaborating on the process. You already feel like my future coworker!

Common Problem Area 3: Not asking clarifying questions
An interview challenge I often ask as a warm-up question goes something like this: 

You have a grouping of integer numbers. Write a method that finds two numbers that add up to a given target value, stop immediately, and report those numbers. Return two ‘null’ values if nothing is found.]]></description>
<dc:subject>communication interview management</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:janpeuker/b:080600a81f4e/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:communication"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:interview"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:management"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="https://a16z.com/2020/10/15/the-emerging-architectures-for-modern-data-infrastructure/">
    <title>Emerging Architectures for Modern Data Infrastructure</title>
    <dc:date>2020-10-16T00:29:15+00:00</dc:date>
    <link>https://a16z.com/2020/10/15/the-emerging-architectures-for-modern-data-infrastructure/</link>
    <dc:creator>janpeuker</dc:creator><description><![CDATA[In fact, many of today’s fastest growing infrastructure startups build products to manage data. These systems enable data-driven decision making (analytic systems) and drive data-powered products, including with machine learning (operational systems). They range from the pipes that carry data, to storage solutions that house data, to SQL engines that analyze data, to dashboards that make data easy to understand – from data science and machine learning libraries, to automated data pipelines, to data catalogs, and beyond.
...
Due to the energy, resources, and growth of the data infrastructure market, the tools and best practices for data infrastructure are also evolving incredibly quickly. So much so, it’s difficult to get a cohesive view of how all the pieces fit together. And that’s what we set out to provide some insight into.

We asked practitioners from leading data organizations: (a) what their internal technology stacks looked like, and (b) whether it would differ if they were to build a new one from scratch.

The result of these discussions was the following reference architecture diagram:

Unified Architecture for Data Infrastructure]]></description>
<dc:subject>Architecture analytics model data</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:janpeuker/b:93b0d01481eb/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:Architecture"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:analytics"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:model"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:data"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="https://inmotionmagazine.com/eno1.html">
    <title>Generative Music - Brian Eno - In Motion Magazine</title>
    <dc:date>2020-10-07T10:19:01+00:00</dc:date>
    <link>https://inmotionmagazine.com/eno1.html</link>
    <dc:creator>janpeuker</dc:creator><description><![CDATA[Evolving metaphors, in my opinion, is what artists do. They produce work that gives you the chance to experience in a safe environment, because nothing really happens to you when you looking at artwork, they give you the chance to experience what might be quite dangerous and radical new ideas. They give you a chance to step out of real life into simulator life. A metaphor is a way of explaining something that we've experienced in a set of terms, a different set of terms.

There's a very interesting book by Lakoff and Johnson, that famous thirties singing team, it's a book about metaphor, it's called Metaphors We Live By. They give a very clear example of the effect of metaphor. They say we use in our culture the metaphor, argument is war. All of our language about argument "she defeated him", "he attacked her position", so on and so on, they are all arguments that relate to fighting.

When we think about the process of arguing, we tend to then reconstrue our possibilities in terms of that metaphor. What Lakoff and Johnson say is suppose that somebody had said argument is dance, suppose that was the dominant metaphor. So instead of it being seen you have the process where one person defeats another, it becomes a process where two people together make something beautiful between them. We could have that metaphor for argument, we don't.

But do you understand that a shift of that kind produces an entirely different kind of discourse. How the shift from one way of dealing in activity that we all engage in to another changes that activity. Suddenly our language of possibilities is renewed and different.]]></description>
<dc:subject>Emergence philosophy art music book</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:janpeuker/b:2fb37a1ededa/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:Emergence"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:philosophy"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:art"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:music"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:book"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="https://queue.acm.org/detail.cfm?id=2229115">
    <title>Getting What You Measure - ACM Queue</title>
    <dc:date>2020-09-29T06:35:54+00:00</dc:date>
    <link>https://queue.acm.org/detail.cfm?id=2229115</link>
    <dc:creator>janpeuker</dc:creator><description><![CDATA[Additionally, we have used software metrics to track the ongoing development effort of more than 400 systems. In the course of these projects, we have learned some pitfalls to avoid when using software metrics for project management. This article addresses the four most important of these:

• Metric in a bubble
• Treating the metric
• One-track metric
• Metrics galore

Knowing about these pitfalls will help you to recognize them and, hopefully, avoid them, which will help make your project successful. As a software engineer, your knowledge of these pitfalls will help you understand why project managers want to use software metrics and assist the managers when they are applying metrics in an inefficient manner. 
...
Thus, a metric in isolation will not help you reach your goal. On the other hand, assigning too much meaning to a metric leads to a different pitfall.

TREATING THE METRIC
Making alterations just to improve the value of a metric. Recognized when changes made to the software are purely cosmetic. Can be solved by determining the root cause of the value of a metric.

The most common pitfall is making changes to a system just to improve the value of a metric, instead of trying to reach a particular goal. At this point, the value of the metric has become a goal in itself, instead of a means of reaching a larger goal. This situation leads to refactorings that simply “please the metric,” which is a waste of precious resources. You know this has happened when, for example, one developer explains to another developer that a refactoring needs to be done because “the duplication percentage is too high,” instead of explaining that multiple copies of a piece of code can cause problems in maintaining the code. It is never a problem that the value of a metric is too high or too low: the fact that this value is not in line with your goal should be the reason to perform a refactoring.

]]></description>
<dc:subject>article devops management bias psychology monitoring</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:janpeuker/b:8852f9811878/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:article"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:devops"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:management"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:bias"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:psychology"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:monitoring"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="https://josephg.com/blog/crdts-are-the-future/">
    <title>I was wrong. CRDTs are the future</title>
    <dc:date>2020-09-29T03:19:42+00:00</dc:date>
    <link>https://josephg.com/blog/crdts-are-the-future/</link>
    <dc:creator>janpeuker</dc:creator><description><![CDATA[They’re neat and I’m glad people are working on them but:

They’re slow. Like, really slow. Eg Delta-CRDTs takes nearly 6 hours to process a real world editing session with a single user typing a 100KB academic paper. (Benchmarks - look for B4.)
Because of how CRDTs work, documents grow without bound. The current automerge master takes 83MB to represent that 100KB document on disk. Can you ever delete that data? Probably not. And that data can’t just sit on disk. It needs to be loaded into memory to handle edits. (Automerge currently grows to 1.1GB in memory for that.)
CRDTs are missing features that OT has had for years. For example, nobody has yet made a CRDT that supports /object move/ (move something from one part of a JSON tree to another). You need this for applications like Workflowy. OT handles this fine.
CRDTs are complicated and hard to reason about.
You probably have a centralized server / database anyway.
I made all those criticisms and dismissed CRDTs. But in doing so I stopped keeping track of the literature. And - surprise! CRDTs went and quietly got better. Martin’s talk (which is well worth a watch) addressed the main points:

Speed: Using modern CRDTs (Automerge / RGA or y.js / YATA), applying operations should be possible with just an log(n) lookup. (More on this below).
Size: Martin’s columnar encoding can store a text document with only about a 1.5x-2x size overhead compared to the contents themselves. Martin talks about this 54 minutes into his talk. The code to make this work in automerge hasn’t merged yet, but Yjs implemented Martin’s ideas. And in doing so, Yjs can store that same 100KB document in 160KB on disk, or 3MB in memory. Much better.
Features: There’s at least a theoretical way to add all the features using rewinding and replaying, though nobody’s implemented this stuff yet.
Complexity: I think a decent CRDT will be bigger than the equivalent OT implementation, but not by much. Martin managed to make a tiny, slow implementation of automerge in only about 100 lines of code.]]></description>
<dc:subject>concurrency scalability</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:janpeuker/b:2b1a42b499aa/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:concurrency"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:scalability"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="https://medium.com/@bellmar/a-software-engineers-guide-to-cybernetics-d57c7def1453">
    <title>A Software Engineer’s Guide to Cybernetics | by Marianne Bellotti | Sep, 2020 | Medium</title>
    <dc:date>2020-09-14T02:15:43+00:00</dc:date>
    <link>https://medium.com/@bellmar/a-software-engineers-guide-to-cybernetics-d57c7def1453</link>
    <dc:creator>janpeuker</dc:creator><description><![CDATA[Wiener’s and Von Neumann’s frenemy status was the stuff of legend. One time collaborators, they would intermittently promote and sabotage each other’s work and reputation. Wiener would show up to Von Neumann’s talks and loudly snore through them. Von Neumann would sit in the front row of Wiener’s talks and make a show of flipping through that day’s edition of The New York Times instead of listening.
At the root of it was a significant political divide. While WWII had brought so many great mathematicians into the same network of research institutions and professional connections, the question of what should be learned from that period ensured the collaboration didn’t last. Von Neumann was very anti-Soviet and supported the development of more advanced nuclear weapons as a deterrent to war. Wiener was horrified by this, deeply pessimistic about the impact of technology on society, and sympathetic to the socialist cause. He encouraged Soviet cyberneticists who attempted to implement his ideas on a grand social engineering scale. This drove cybernetics into the hands of propaganda fueled futurism right about the same time the personality conflicts between its founding scholars were slowing its momentum in academia. The fact that Wiener was married to an unapologetic Nazi didn’t help.
The popularity of Wiener’s books and the interdisciplinary nature of cybernetics meant artists and social scientists began using its language throughout the 1960s and into the 1970s. Susanne Ussing read The Human Use of Human Beings and created a series of sensory art experiences dubbed cyberspaces. Doctor Who called their new half man half machine monsters cybermen in 1966. ]]></description>
<dc:subject>cybernetics history</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:janpeuker/b:e1b2d4280fd8/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:cybernetics"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:history"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="https://softwarebyscience.com/very-short-functions-are-a-code-smell-an-overview-of-the-science-on-function-length/">
    <title>Very short functions are a code smell – an overview of the science on function length – Software by Science</title>
    <dc:date>2020-08-31T03:38:50+00:00</dc:date>
    <link>https://softwarebyscience.com/very-short-functions-are-a-code-smell-an-overview-of-the-science-on-function-length/</link>
    <dc:creator>janpeuker</dc:creator><description><![CDATA[Highlights:

We find that in older studies (pre-2000) short functions correlate with higher defect density
...
To put it plainly, if we have a long function and split it into smaller ones, we’re not removing a source of defects, but we would simply be switching from one to another.

The same effect can be seen in other defect prediction studies. For example in [5] we see that both “Weighted Methods per Class” and “Average Method Complexity” correlate with defects, where former is defined as “number of methods in the class” and latter as “the average method size for each class“.

In both studies both metrics have a statistically significant correlation with defects, and this appears to be the trend across many other studies in defect prediction literature.
There seem to be no post-2000 studies exclusively focusing on function length, but through original research we find that modern code bases exhibit similar behavior
We also find that in empirical experiments short functions make code slower to debug, with some weaker evidence suggesting they also make it slower for adding new features but faster to modify
...
The first rule of functions is that they should be small. The second rule of functions is that they should be smaller than that. Functions should not be 100 lines long. Functions should hardly ever be 20 lines long

Favoring short functions isn’t by any means a new practise – a 1986 study “An Empirical Study of Software Design Practices” states “keeping modules small” as a good design practise. They also quote a book from 1974, stating “many programming standards limit module size to one page (or 50-60 source lines of code)”.]]></description>
<dc:subject>engineering microservices research reference</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:janpeuker/b:d1df593bb9cd/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:engineering"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:microservices"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:research"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:reference"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="https://thesephist.com/posts/programming-environment/">
    <title>It's the programming environment, not the programming language | thesephist.com</title>
    <dc:date>2020-08-31T03:37:42+00:00</dc:date>
    <link>https://thesephist.com/posts/programming-environment/</link>
    <dc:creator>janpeuker</dc:creator><description><![CDATA[But while programming languages are academically interesting, I think we more desperately need innovation in programming environments.

The programming environment isn’t a single component of our workflow, but the total sum enabled by the tools working together harmoniously. The environment contains the programming language, but also includes the debugging experience, dependency management, how we communicate with other developers (both within source code and without), how we trace and observe code in production, and everything else in the process of designing APIs to recovering from failure.
...
There are some people trying to create better programming environments. Repl.it brings general purpose development to the browser. Experiments like Light Table more closely integrate source code with its output. Jupyter notebooks are a unique way of writing and sharing code that focus on the process of iteration.]]></description>
<dc:subject>devops engineering productivity</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:janpeuker/b:da067716a51a/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:devops"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:engineering"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:productivity"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="http://ethics.fast.ai/">
    <title>Practical Data Ethics | Data ethics</title>
    <dc:date>2020-08-23T01:53:09+00:00</dc:date>
    <link>http://ethics.fast.ai/</link>
    <dc:creator>janpeuker</dc:creator><description><![CDATA[Data ethics covers an incredibly broad range of topics, many of which are urgent, making headlines daily, and causing harm to real people right now. A meta-analysis of over 100 syllabi on tech ethics, titled “What do we teach when we teach tech ethics?” found that there was huge variation in which topics are covered across tech ethics courses (law & policy, privacy & surveillance, philosophy, justice & human rights, environmental impact, civic responsibility, robots, disinformation, work & labor, design, cybersecurity, research ethics, and more– far more than any one course could cover). These courses were taught by professors from a variety of fields. The area where there was more unity was in outcomes, with abilities to critique, spot issues, and make arguments being some of the most common desired outcomes for tech ethics course.]]></description>
<dc:subject>ai learning bias culture</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:janpeuker/b:cb4829390ebf/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:ai"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:learning"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:bias"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:culture"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="https://css-tricks.com/open-source-etiquette-guidebook/">
    <title>An Open Source Etiquette Guidebook | CSS-Tricks</title>
    <dc:date>2020-08-22T02:37:09+00:00</dc:date>
    <link>https://css-tricks.com/open-source-etiquette-guidebook/</link>
    <dc:creator>janpeuker</dc:creator><description><![CDATA[For the Maintainer

Use labels like “help wanted” or “beginner friendly” to guide people to issues they can work on if they are new to the project.
When running benchmarks, show the authors of the framework/library/etc the code you’re going to run to benchmark on before running it. Allow them to PR (it’s ok to give a deadline). That way when your benchmark is run you know they have your approval and it’s as fair as possible. This also fixes issues like benchmarking dev instead of prod or some user errors.
When you ask someone for help or label an issue help wanted and someone PRs, please write a comment explaining why you are closing it if you decide not to merge. It’s disrespectful of their time otherwise, as they were following your call to action. I would even go so far as to say it would be nice to comment on any PR that you close OR merge, to explain why or say thank you, respectively.]]></description>
<dc:subject>opensource culture</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:janpeuker/b:cd105b24f1e4/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:opensource"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:culture"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="https://cloud.google.com/solutions/building-production-ready-data-pipelines-using-dataflow-deploying#updating_streaming_pipelines_in_production">
    <title>Building production-ready data pipelines using Dataflow: Deploying data pipelines</title>
    <dc:date>2020-08-02T07:07:36+00:00</dc:date>
    <link>https://cloud.google.com/solutions/building-production-ready-data-pipelines-using-dataflow-deploying#updating_streaming_pipelines_in_production</link>
    <dc:creator>janpeuker</dc:creator><description><![CDATA[Another drawback is that you incur some downtime between the time when the existing streaming job terminates and the time when the replacement pipeline can be ready to resume processing data.

However, the advantage of this approach is that it's simple to cancel or drain the existing pipeline, and to then launch a new job to replace it with the updated pipeline.

Message reprocessing using Pub/Sub Snapshot and Seek
In some situations, after you replace or cancel a drained pipeline, you might need to reprocess previously delivered Pub/Sub messages. For example, you might need to reprocess data using updated business logic. Pub/Sub Seek is a feature that lets you replay messages from a Pub/Sub Snapshot. You can use the Pub/Sub Seek feature with Dataflow pipelines to reprocess messages from the time when the subscription snapshot is created.

During development and testing, you can also use Pub/Sub Seek to replay the known messages repeatedly to verify the output from your pipeline. When you use Pub/Sub Seek, don't seek a subscription snapshot when the subscription is being consumed by a pipeline. If you do, it can invalidate Dataflow's watermark logic and can affect the exactly-once processing of Pub/Sub messages.

..

Over time, suppose that the message schema mutates in non-trivial ways; fields are added, removed, or replaced, and Schema A evolves into a new schema. In the discussion that follows, the new schema is referred to as Schema B. In this case, Pipeline A needs to be updated, and the output table schema needs to support Schema B.

Handling schema mutations using master and staging tables
...
One approach to avoid disruption is to separate the data that's written by the pipeline into a master table and into one or more staging tables. In this approach, the master table stores historic data written by the pipeline, and staging tables store the latest pipeline output. You can define a BigQuery façade view over the master and staging tables, which lets consumers query both historic and up-to-date data.]]></description>
<dc:subject>analytics messaging devops</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:janpeuker/b:43e84d1b37b5/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:analytics"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:messaging"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:devops"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="https://fs.blog/2015/09/focusing-illusions/">
    <title>The Focusing Illusion</title>
    <dc:date>2020-07-13T00:53:19+00:00</dc:date>
    <link>https://fs.blog/2015/09/focusing-illusions/</link>
    <dc:creator>janpeuker</dc:creator><description><![CDATA[y favorite chapter in the book Rapt: Attention and the Focused Life by Winifred Gallagher is called ‘Decisions: Focusing Illusions.’ It’s a really great summary of how focusing on the wrong things affects the weights we use to make decisions. There is a lot of great content packed into this chapter but I’ll attempt to highlight a few points.

***
Bounded Rationality

According to the principle of ‘bounded rationality,’ which (Daniel) Kahneman first applied to economic decisions and more recently to choices concerning quality of life, we are reasonable-enough beings but sometimes liable to focus on the wrong things. Our thinking gets befuddled not so much by our emotions as by our ‘cognitive illusions,’ or mistaken intuitions, and other flawed, fragmented mental constructs.
...
The Focusing Illusion

The key to understanding why you pay more attention to your thoughts about living than to life itself is neatly summed up by what Kahneman proudly calls his ‘fortune cookie maxim’ (a.k.a the focusing illusion): ‘Nothing in life is as important as you think it is while you are thinking about it.’ Why? ‘Because you’re thinking about it!]]></description>
<dc:subject>bias psychology economics</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:janpeuker/b:d906e67505d7/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:bias"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:psychology"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:economics"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="https://cloud.google.com/blog/products/management-tools/practical-guide-to-setting-slos">
    <title>Learn how to set SLOs -- SRE tips | Google Cloud Blog</title>
    <dc:date>2020-07-12T12:07:32+00:00</dc:date>
    <link>https://cloud.google.com/blog/products/management-tools/practical-guide-to-setting-slos</link>
    <dc:creator>janpeuker</dc:creator><description><![CDATA[SLO process overview

List out critical user journeys and order them by business impact.

Determine which metrics to use as service-level indicators (SLIs) to most accurately track the user experience.

Determine SLO target goals and the SLO measurement period.

Create SLI, SLO, and error budget consoles.

Create SLO alerts.]]></description>
<dc:subject>devops design monitoring</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:janpeuker/b:98851dfe0e6f/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:devops"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:design"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:monitoring"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="https://www.industrialempathy.com/posts/design-docs-at-google/">
    <title>Design Docs at Google</title>
    <dc:date>2020-07-07T09:50:21+00:00</dc:date>
    <link>https://www.industrialempathy.com/posts/design-docs-at-google/</link>
    <dc:creator>janpeuker</dc:creator><description><![CDATA[Degree of constraint #
One of the primary factors that would influence the shape of a software design and hence the design doc, is the degree of constraint of the solution space.

On one end of the extreme is the “greenfield software project”, where all we know are the goals, and the solution can be whatever makes the most sense. Such a document may be wide-ranging, but it also needs to quickly define a set of rules that allow zooming in on a manageable set of solutions.

On the other end are systems where the possible solutions are very well defined, but it isn’t at all obvious how they could even be combined to achieve the goals. This may be a legacy system that is difficult to change and wasn’t designed to do what you want it to do or a library design that needs to operate within the constraints of the host programming language.

In this situation you may be able to enumerate all the things you can do relatively easily, but you need to creatively put those things together to achieve the goals. There may be multiple solutions, and none of them are really great, and hence such a document should focus on selecting the best way given all identified trade-offs.

Alternatives considered #
This section lists alternative designs that would have reasonably achieved similar outcomes. The focus should be on the trade-offs that each respective design makes and how those trade-offs led to the decision to select the design that is the primary topic of the document.

While it is fine to be succinct about solution that ended up not being selected, this section is one of the most important ones as it shows very explicitly why the selected solution is the best given the project goals and how other solutions, that the reader may be wondering about, introduce trade-offs that are less desirable given the goals.]]></description>
<dc:subject>design Architecture engineering blog best-of model reference</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:janpeuker/b:e38322b6d9e1/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:design"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:Architecture"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:engineering"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:blog"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:best-of"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:model"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:reference"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="https://increment.com/testing/in-praise-of-property-based-testing/">
    <title>In praise of property-based testing – Increment: Testing</title>
    <dc:date>2020-07-07T03:40:24+00:00</dc:date>
    <link>https://increment.com/testing/in-praise-of-property-based-testing/</link>
    <dc:creator>janpeuker</dc:creator><description><![CDATA[This is the fundamental problem of example-based testing: We often treat our tests as specifications, but in reality they are stories. Worse, they’re often shaggy-dog stories, full of a mess of random details, and we get no clue as to which parts of the test actually matter and which parts are just a distraction.

Take a look at the test on the previous page. Which of the details matter? Presumably—hopefully!—the project name is irrelevant. Does it matter that the collaborator limit is specifically three? Probably not, but it might matter that it’s greater than one. Does it matter that the users all have an email address at the same domain? Maybe, but the test doesn’t say.

A PROPERTY-BASED EXAMPLE
Property-based testing is about removing those extraneous details, and property-based testing libraries are tools to help us do so.

The following is how we might write the same test using Hypothesis:]]></description>
<dc:subject>Python quality</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:janpeuker/b:f7cf9973b844/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:Python"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:quality"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="http://www.revue-backoffice.com/en/issues/01-making-do-making-with/nolwenn-maudet-muriel-cooper-information-landscapes">
    <title>Muriel Cooper, Information Landscapes | Back Office</title>
    <dc:date>2020-07-06T13:36:33+00:00</dc:date>
    <link>http://www.revue-backoffice.com/en/issues/01-making-do-making-with/nolwenn-maudet-muriel-cooper-information-landscapes</link>
    <dc:creator>janpeuker</dc:creator><description><![CDATA[In order to format these data flows, Cooper became interested in the notion of a graphic “principle,” present in particular in the graphic charters of visual identities (logos, etc.) which function as a “paradigm of graphically expressed spatial and relational instructions that hierarchically organize data for the reader.” 25 She drew her inspiration from the book Designing Programmes → b, 56–57.© Lars Müller Publishers) by artist and designer Karl Gerstner, exploring graphic design from the standpoint of the “system,” mainly through the use of the typographic grid. Today, Conditional Design, a Dutch collective made up of Luna Maurer, Edo Paulus, Jonathan Puckey and Roel Wouters, is continuing Cooper’s intent to define and shape the process, and apply it to the field of graphic design.

In Filtering the News, → c) Cooper proposes that the reader browse a selection of press articles according to one of four viewing criteria provided: title, source, length of article, and press agency. Because it’s impossible to know the content in advance, the designer must create a system that takes all potential information into account. One must create flexible structures in order to preserve the widest possible field of interpretation, leaving it up to the reader to choose their own access.]]></description>
<dc:subject>design typography visualization</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:janpeuker/b:520cd0720a61/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:design"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:typography"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:visualization"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="https://www.sandimetz.com/blog/2016/1/20/the-wrong-abstraction">
    <title>The Wrong Abstraction — Sandi Metz</title>
    <dc:date>2020-07-06T05:52:12+00:00</dc:date>
    <link>https://www.sandimetz.com/blog/2016/1/20/the-wrong-abstraction</link>
    <dc:creator>janpeuker</dc:creator><description><![CDATA[I've been thinking about the consequences of the "wrong abstraction." My RailsConf 2014 "all the little things" talk included a section where I asserted:

duplication is far cheaper than the wrong abstraction

And in the summary, I went on to advise:

prefer duplication over the wrong abstraction

This small section of a much bigger talk invoked a surprisingly strong reaction. A few folks suggested that I had lost my mind, but many more expressed sentiments along the lines of:
...
Existing code exerts a powerful influence. Its very presence argues that it is both correct and necessary. We know that code represents effort expended, and we are very motivated to preserve the value of this effort. And, unfortunately, the sad truth is that the more complicated and incomprehensible the code, i.e. the deeper the investment in creating it, the more we feel pressure to retain it (the "sunk cost fallacy"). It's as if our unconscious tell us "Goodness, that's so confusing, it must have taken ages to get right. Surely it's really, really important. It would be a sin to let all that effort go to waste."]]></description>
<dc:subject>engineering Patterns ruby</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:janpeuker/b:1d46491edc5a/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:engineering"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:Patterns"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:ruby"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="https://www.theguardian.com/world/2020/jul/05/hong-kong-books-by-pro-democracy-activists-disappear-from-library-shelves">
    <title>Hong Kong: books by pro-democracy activists disappear from library shelves | World news | The Guardian</title>
    <dc:date>2020-07-06T03:10:25+00:00</dc:date>
    <link>https://www.theguardian.com/world/2020/jul/05/hong-kong-books-by-pro-democracy-activists-disappear-from-library-shelves</link>
    <dc:creator>janpeuker</dc:creator><description><![CDATA[Books written by prominent Hong Kong democracy activists have started to disappear from the city’s libraries, online records show, days after Beijing imposed a new national security law on the finance hub.

Among the authors whose titles are no longer available are Joshua Wong, one of the city’s most prominent young activists, and Tanya Chan, a well known pro-democracy lawmaker.

]]></description>
<dc:subject>asia society</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:janpeuker/b:cc543a950bcc/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:asia"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:society"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="https://carolchen.me/blog/jits-impls/">
    <title>How JIT Compilers are Implemented and Fast: Julia, Pypy, LuaJIT, Graal and More | Carol's Blog</title>
    <dc:date>2020-07-06T02:53:29+00:00</dc:date>
    <link>https://carolchen.me/blog/jits-impls/</link>
    <dc:creator>janpeuker</dc:creator><description><![CDATA[Disclaimer: I worked on/with a Graal-based language, TruffleRuby for four months and loved it.

Hotspot (named after looking for hot spots) is the VM that ships with standard installations of Java, and there are actually multiple compilers in it for a tiered strategy. Hotspot is open source, with 250,000 lines of code which contains the compilers, and three garbage collectors. It does an awesome job at being a good JIT, there are some benchmarks that have Hotspot on par with C++ impls (oh my gosh so many asterisks on this, you can Google to find all the debate). Though Hotspot is not a tracing JIT, it employs a similar approach of having an interpreter, profiling and then compiling. There is not a specific name for what Hotspot does, though the closest categorization would probably be a Tiering JIT.

Strategies used in Hotspot inspired many of the subsequent JITs, the structure of language VMs and especially the development of Javascript engines. It also created a wave of JVM languages such as Scala, Kotlin, JRuby or Jython. JRuby and Jython are fun implementations of Ruby and Python that compile the source code down to the JVM bytecode and then have Hotspot execute it. These projects have been relatively successful at speeding up languages like Python and Ruby (Ruby more so than Python) without having to implement an entire toolchain like Pypy did. Hotspot is also unique in that it's a JIT for a less dynamic language (though it's technically it's a JIT for JVM bytecode and not Java).

]]></description>
<dc:subject>java Python performance engineering</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:janpeuker/b:2dd7d05874b6/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:java"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:Python"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:performance"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:engineering"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="https://www.cs.virginia.edu/~robins/YouAndYourResearch.html">
    <title>You and Your Research</title>
    <dc:date>2020-07-04T07:23:49+00:00</dc:date>
    <link>https://www.cs.virginia.edu/~robins/YouAndYourResearch.html</link>
    <dc:creator>janpeuker</dc:creator><description><![CDATA[Another personality defect is ego assertion and I'll speak in this case of my own experience. I came from Los Alamos and in the early days I was using a machine in New York at 590 Madison Avenue where we merely rented time. I was still dressing in western clothes, big slash pockets, a bolo and all those things. I vaguely noticed that I was not getting as good service as other people. So I set out to measure. You came in and you waited for your turn; I felt I was not getting a fair deal. I said to myself, ``Why? No Vice President at IBM said, `Give Hamming a bad time'. It is the secretaries at the bottom who are doing this. When a slot appears, they'll rush to find someone to slip in, but they go out and find somebody else. Now, why? I haven't mistreated them.'' Answer, I wasn't dressing the way they felt somebody in that situation should. It came down to just that - I wasn't dressing properly. I had to make the decision - was I going to assert my ego and dress the way I wanted to and have it steadily drain my effort from my professional life, or was I going to appear to conform better? I decided I would make an effort to appear to conform properly. The moment I did, I got much better service. And now, as an old colorful character, I get better service than other people.]]></description>
<dc:subject>culture communication productivity research</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:janpeuker/b:4c5afd9af49f/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:culture"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:communication"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:productivity"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:research"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="https://joreteg.com/blog/project-fugu-a-new-hope">
    <title>Project Fugu: A New Hope</title>
    <dc:date>2020-07-03T01:56:42+00:00</dc:date>
    <link>https://joreteg.com/blog/project-fugu-a-new-hope</link>
    <dc:creator>janpeuker</dc:creator><description><![CDATA[Capabilities. That's what The Web needs.

Things like:

Face or other biometric logins for websites
USB connectivity
TCP and UDP sockets clients / servers
Serial connections
Geofencing and background location tracking
Screen lock / screen brightness
Barcode scanning / generation
Contacts API.
etc., etc., etc.
If a native app can do it, the web should be able to do also!

Progress!
As it turns out the folks on the Chrome team feel the same.

In fact, there's an entire public spreadsheet with a really ambitious list of capabilities that have been identified as gaps between what the web can do and what native apps can do.

The web as an application platform, has an incredible future.]]></description>
<dc:subject>html5 iot hardware internet standard</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:janpeuker/b:175d387ba965/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:html5"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:iot"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:hardware"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:internet"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:standard"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="https://twobithistory.org/2020/06/28/rest.html">
    <title>Roy Fielding's Misappropriated REST Dissertation</title>
    <dc:date>2020-06-29T08:07:57+00:00</dc:date>
    <link>https://twobithistory.org/2020/06/28/rest.html</link>
    <dc:creator>janpeuker</dc:creator><description><![CDATA[Fielding’s dissertation (titled “Architectural Styles and the Design of Network-based Software Architectures”) is not about how to build APIs on top of HTTP but rather about HTTP itself. Fielding contributed to the HTTP/1.0 specification and co-authored the HTTP/1.1 specification, which was published in 1999. He was interested in the architectural lessons that could be drawn from the design of the HTTP protocol; his dissertation presents REST as a distillation of the architectural principles that guided the standardization process for HTTP/1.1. Fielding used these principles to make decisions about which proposals to incorporate into HTTP/1.1. For example, he rejected a proposal to batch requests using new MGET and MHEAD methods because he felt the proposal violated the constraints prescribed by REST, especially the constraint that messages in a REST system should be easy to proxy and cache.1 So HTTP/1.1 was instead designed around persistent connections over which multiple HTTP requests can be sent. (Fielding also felt that cookies are not RESTful because they add state to what should be a stateless system, but their usage was already entrenched.2) REST, for Fielding, was not a guide to building HTTP-based systems but a guide to extending HTTP]]></description>
<dc:subject>api Rest internet</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:janpeuker/b:67ea053df55e/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:api"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:Rest"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:internet"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="https://towardsdatascience.com/a-gentle-introduction-to-graph-neural-network-basics-deepwalk-and-graphsage-db5d540d50b3">
    <title>A Gentle Introduction to Graph Neural Networks (Basics, DeepWalk, and GraphSage)</title>
    <dc:date>2020-06-28T03:06:30+00:00</dc:date>
    <link>https://towardsdatascience.com/a-gentle-introduction-to-graph-neural-network-basics-deepwalk-and-graphsage-db5d540d50b3</link>
    <dc:creator>janpeuker</dc:creator><description><![CDATA[Graph Neural Network
Graph Neural Network is a type of Neural Network which directly operates on the Graph structure. A typical application of GNN is node classification. Essentially, every node in the graph is associated with a label, and we want to predict the label of the nodes without ground-truth. This section will illustrate the algorithm described in the paper, the first proposal of GNN and thus often regarded as the original GNN.
In the node classification problem setup, each node v is characterized by its feature x_v and associated with a ground-truth label t_v. Given a partially labeled graph G, the goal is to leverage these labeled nodes to predict the labels of the unlabeled. It learns to represent each node with a d dimensional vector (state) h_v which contains the information of its neighborhood. ]]></description>
<dc:subject>ai graph</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:janpeuker/b:1575b6689275/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:ai"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:graph"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="https://zwischenzugs.com/2020/06/25/the-runbooks-project/">
    <title>The Runbooks Project – zwischenzugs</title>
    <dc:date>2020-06-25T14:15:13+00:00</dc:date>
    <link>https://zwischenzugs.com/2020/06/25/the-runbooks-project/</link>
    <dc:creator>janpeuker</dc:creator><description><![CDATA[A Powerful External Force Is Often Needed
Looking at the history of these kind of efforts, it seems that people need to be forced – against their own natures – into following these best practices that invest current effort for future operational benefit.

Examples from The Checklist Manifesto included:

Boeing and checklists (“planes are falling from the sky – no matter how good the pilots!”)
Construction and standard project plans (“falling building are unacceptable, we need a set of build patterns to follow and standards to enforce”)
Medicine and ‘pre-flight checklists’ (“we’re getting sued every time a surgeon makes a mistake, how can we reduce these?”)]]></description>
<dc:subject>economics devops Emergence reference</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:janpeuker/b:a9d596f25b4a/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:economics"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:devops"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:Emergence"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:reference"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="https://www.newyorker.com/culture/dept-of-design/how-the-coronavirus-will-reshape-architecture">
    <title>How the Coronavirus Will Reshape Architecture | The New Yorker</title>
    <dc:date>2020-06-25T00:29:03+00:00</dc:date>
    <link>https://www.newyorker.com/culture/dept-of-design/how-the-coronavirus-will-reshape-architecture</link>
    <dc:creator>janpeuker</dc:creator><description><![CDATA[Much of modernist architecture can be understood as a consequence of the fear of disease, a desire to eradicate dark rooms and dusty corners where bacteria lurk. Le Corbusier lifted his houses off the humid ground to avoid contamination. Adolf Loos’s ultra-boxy Villa Müller in Prague, from 1930, included a separate space in which to quarantine sick children. Architects collaborated with progressive doctors to build other sanatoriums across Europe. “Tuberculosis helped make modern architecture modern,” the Princeton professor Beatriz Colomina writes in her revisionary history “X-Ray Architecture.” The industrialized austerity of Ludwig Mies van der Rohe or Marcel Breuer “is unambiguously that of the hospital,” the empty white walls, bare floors, and clean metal fixtures are all “surfaces that, as it were, demonstrate their cleanliness.”

]]></description>
<dc:subject>design health Architecture productivity</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:janpeuker/b:44c000edd9d3/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:design"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:health"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:Architecture"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:productivity"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=bdc48fa11e46">
    <title>kernel/git/torvalds/linux.git - Linux kernel source tree</title>
    <dc:date>2020-06-01T07:13:12+00:00</dc:date>
    <link>https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=bdc48fa11e46</link>
    <dc:creator>janpeuker</dc:creator><description><![CDATA[Yes, staying withing 80 columns is certainly still _preferred_.  But
it's not the hard limit that the checkpatch warnings imply, and other
concerns can most certainly dominate.

Increase the default limit to 100 characters.  Not because 100
characters is some hard limit either, but that's certainly a "what are
you doing" kind of value and less likely to be about the occasional
slightly longer lines.

Miscellanea:

 - to avoid unnecessary whitespace changes in files, checkpatch will no
   longer emit a warning about line length when scanning files unless
   --strict is also used

 - Add a bit to coding-style about alignment to open parenthesis]]></description>
<dc:subject>quality documentation productivity engineering</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:janpeuker/b:2c75b5009e68/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:quality"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:documentation"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:productivity"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:engineering"/>
</rdf:Bag></taxo:topics>
</item>
<item rdf:about="https://axispraxis.wordpress.com/2020/05/27/what-is-emergence-and-why-should-we-care-about-it/">
    <title>What is emergence, and why should we care about it? – Axis, Praxis</title>
    <dc:date>2020-05-30T08:05:03+00:00</dc:date>
    <link>https://axispraxis.wordpress.com/2020/05/27/what-is-emergence-and-why-should-we-care-about-it/</link>
    <dc:creator>janpeuker</dc:creator><description><![CDATA[An emergent phenomenon can always be understood in a reductionist ontology as a situation in which the ‘true’ reductionist theory simply hasn’t been discovered yet, or (if it is understood as already existing) is too computationally intensive to be applied to macro-scale phenomena. Thus from the reductionist perspective, emergence can only ever be “weak” or “epistemic”. Emergentism as a scientific stance must then be understood as making an ontological claim that goes beyond the mere occurrence of apparent emergence: that the intelligibility of the universe does not depend on isomorphism between the universe and the (as yet undiscovered) fully reductionist theory. Emergentism instead suggests the possibility that part-whole relationships may not be fully explainable using causal chains proceeded from parts to wholes. Emergentism therefore raises a possibility that sounds radical and perhaps even meaningless from the reductionist perspective: that parts and wholes have ‘equal’ ontological priority, with the wholes constraining the parts just as much as the parts constrain the wholes. Along with this ontology that departs from strict hierarchy, emergentism may draw attention to the possibility that the universe is in some sense open to novel phenomena that cannot be perfectly anticipated using any scientific theory, but, once present, can still be studied using scientific methods. In other words, emergentism suggests that even our best quantitative theories cannot always tell us when qualitative changes will occur.

The ontological debate between reductionism and emergentism takes on cultural importance in the context of explaining human agency. If phenomena associated with living agents (humans and other biological entities) are ultimately to be explained in terms of their constituent parts, then can causation be attributed to an emergent agent? In other words, do humans cause their actions, or must the ultimate causes be sought at the level of molecular biology? If the latter perspective is taken then human agency becomes a kind of illusion or epiphenomenon, as it restricts causality to ‘fundamental’ entities. Emergentism in this context can therefore be understood as an attempt to create ‘ontic space’ for scientifically coherent forms of human agency.]]></description>
<dc:subject>Emergence philosophy</dc:subject>
<dc:source>https://pinboard.in/</dc:source>
<dc:identifier>https://pinboard.in/u:janpeuker/b:34ec713b34c3/</dc:identifier>
<taxo:topics><rdf:Bag>	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:Emergence"/>
	<rdf:li rdf:resource="https://pinboard.in/u:janpeuker/t:philosophy"/>
</rdf:Bag></taxo:topics>
</item>
</rdf:RDF>