<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom"><title>abstract.properties</title><subtitle>Sufian Rhazi's weblog</subtitle><link href="https://abstract.properties/atom.xml" rel="self" /><link href="https://abstract.properties/" /><id>https://abstract.properties/</id><updated>2025-04-21T00:00:00.000Z</updated><entry><title>Antisocial Intelligence</title><link rel="alternate" type="text/html" href="https://abstract.properties/antisocial-intelligence.html" /><id>https://abstract.properties/antisocial-intelligence.html</id><updated>2025-04-21T00:00:00.000Z</updated><summary>If AI is good, why does it make me feel bad?</summary><author><name>Sufian Rhazi</name></author><category term="AI"/><category term="LLM"/><category term="Programming"/><category term="Software"/></entry><entry><title>Gooey internals: simplifying the graph</title><link rel="alternate" type="text/html" href="https://abstract.properties/gooey-graph-internals.html" /><id>https://abstract.properties/gooey-graph-internals.html</id><updated>2025-03-27T00:00:00.000Z</updated><summary>An upcoming change to Gooey's dependency graph</summary><author><name>Sufian Rhazi</name></author><category term="javascript"/><category term="gooey"/><category term="frontend engineering"/></entry><entry><title>Gooey internals: keyless lists</title><link rel="alternate" type="text/html" href="https://abstract.properties/gooey-keyless-lists.html" /><id>https://abstract.properties/gooey-keyless-lists.html</id><updated>2025-03-17T00:00:00.000Z</updated><summary>The key prop isn't necessary for rendering lists in frontend frameworks</summary><author><name>Sufian Rhazi</name></author><category term="javascript"/><category term="gooey"/><category term="frontend engineering"/></entry><entry><title>The Shadow DOM is in the front</title><link rel="alternate" type="text/html" href="https://abstract.properties/the-shadow-dom-is-in-the-front.html" /><id>https://abstract.properties/the-shadow-dom-is-in-the-front.html</id><updated>2024-11-21T00:00:00.000Z</updated><summary>It'd be easier to understand if it was the "Front Facade DOM"</summary><author><name>Sufian Rhazi</name></author><category term="shadow dom"/><category term="javascript"/><category term="programming"/><category term="recurse center"/></entry><entry><title>Operational burden is a choice</title><link rel="alternate" type="text/html" href="https://abstract.properties/operational-burden-is-a-choice.html" /><id>https://abstract.properties/operational-burden-is-a-choice.html</id><updated>2024-11-06T00:00:00.000Z</updated><summary>Being oncall 24/7 is a technical choice, does it need to be that way?</summary><author><name>Sufian Rhazi</name></author><category term="devlog"/><category term="programming"/><category term="recurse center"/></entry><entry><title>Devlog: dependency graph as architecture</title><link rel="alternate" type="text/html" href="https://abstract.properties/devlog-dependency-graph-as-architecture.html" /><id>https://abstract.properties/devlog-dependency-graph-as-architecture.html</id><updated>2024-10-29T00:00:00.000Z</updated><summary>How Gooey works as an architecture for applications</summary><author><name>Sufian Rhazi</name></author><category term="devlog"/><category term="programming"/><category term="recurse center"/></entry><entry><title>Devlog: a sketch of this application</title><link rel="alternate" type="text/html" href="https://abstract.properties/devlog-a-sketch-of-this-application.html" /><id>https://abstract.properties/devlog-a-sketch-of-this-application.html</id><updated>2024-10-22T00:00:00.000Z</updated><summary>A rough idea of what I'm building</summary><author><name>Sufian Rhazi</name></author><category term="devlog"/><category term="programming"/><category term="recurse center"/></entry><entry><title>Devlog: what is a module?</title><link rel="alternate" type="text/html" href="https://abstract.properties/devlog-what-is-a-module.html" /><id>https://abstract.properties/devlog-what-is-a-module.html</id><updated>2024-10-14T00:00:00.000Z</updated><summary>A module is a bit like a function, could both be manipulated in the same way?</summary><author><name>Sufian Rhazi</name></author><category term="devlog"/><category term="programming"/><category term="recurse center"/></entry><entry><title>JavaScript's upcoming Explicit Resource Management is great!</title><link rel="alternate" type="text/html" href="https://abstract.properties/explicit-resource-management-is-great.html" /><id>https://abstract.properties/explicit-resource-management-is-great.html</id><updated>2024-10-11T00:00:00.000Z</updated><summary>Disposing of things is about to get much easier</summary><author><name>Sufian Rhazi</name></author><category term="programming"/><category term="javascript"/></entry><entry><title>Devlog: week one</title><link rel="alternate" type="text/html" href="https://abstract.properties/devlog-week-one.html" /><id>https://abstract.properties/devlog-week-one.html</id><updated>2024-10-07T00:00:00.000Z</updated><summary>Let's start with regular updates on my project</summary><author><name>Sufian Rhazi</name></author><category term="devlog"/><category term="programming"/><category term="recurse center"/></entry><entry><title>Practice and smoothing</title><link rel="alternate" type="text/html" href="https://abstract.properties/practice-and-smoothing.html" /><id>https://abstract.properties/practice-and-smoothing.html</id><updated>2024-10-01T00:00:00.000Z</updated><summary>Thoughts on what practice is and what practice means for programming</summary><author><name>Sufian Rhazi</name></author><category term="practice"/><category term="programming"/><category term="piano"/><category term="music"/><category term="thoughts"/></entry><entry><title>Fall 2024</title><link rel="alternate" type="text/html" href="https://abstract.properties/fall-2024.html" /><id>https://abstract.properties/fall-2024.html</id><updated>2024-09-16T00:00:00.000Z</updated><summary>Starting the season of change with new software</summary><author><name>Sufian Rhazi</name></author><category term="updates"/></entry><entry><title>Why are the rules of hooks rules?</title><link rel="alternate" type="text/html" href="https://abstract.properties/why-are-the-rules-of-hooks-rules.html" /><id>https://abstract.properties/why-are-the-rules-of-hooks-rules.html</id><updated>2024-08-05T00:00:00.000Z</updated><summary>An exploration about why React hooks are awkward</summary><author><name>Sufian Rhazi</name></author><category term="React"/><category term="JavaScript"/><category term="hooks"/><category term="thought exploration"/></entry><entry><title>How this Website is Put Together</title><link rel="alternate" type="text/html" href="https://abstract.properties/how-this-website-is-put-together.html" /><id>https://abstract.properties/how-this-website-is-put-together.html</id><updated>2024-04-30T00:00:00.000Z</updated><summary>An overview of abstract.properties</summary><author><name>Sufian Rhazi</name></author><category term="Infrastructure"/><category term="Operations"/><category term="HTTP"/><category term="TLS"/><category term="nginx"/><category term="SMTP"/><category term="OpenSMTPD"/></entry><entry><title>Fool's Gold</title><link rel="alternate" type="text/html" href="https://abstract.properties/fools-gold.html" /><id>https://abstract.properties/fools-gold.html</id><updated>2024-03-17T00:00:00.000Z</updated><summary>Reflecting on a career in tech</summary><author><name>Sufian Rhazi</name></author><category term="Technology"/><category term="Silicon Valley"/><category term="Business"/><category term="Culture"/><category term="Sendio"/><category term="IMVU"/><category term="Etsy"/><category term="Slack"/><category term="copywriting"/><category term="travel"/></entry><entry><title>gpt.py</title><link rel="alternate" type="text/html" href="https://abstract.properties/gpt.py.html" /><id>https://abstract.properties/gpt.py.html</id><updated>2024-02-03T00:00:00.000Z</updated><summary>gpt.py is a minimal commandline application to query OpenAI</summary><author><name>Sufian Rhazi</name></author><category term="OpenAI"/><category term="ChatGPT"/><category term="python"/><category term="commandline"/></entry><entry><title>Subclassing Function in JavaScript</title><link rel="alternate" type="text/html" href="https://abstract.properties/subclassing-function-in-js.html" /><id>https://abstract.properties/subclassing-function-in-js.html</id><updated>2023-01-14T00:00:00.000Z</updated><summary>How to subclass a function in JavaScript and TypeScript</summary><author><name>Sufian Rhazi</name></author><category term="JavaScript"/><category term="TypeScript"/></entry><entry><title>TypeScript's useDefineForClassFields is Slow</title><link rel="alternate" type="text/html" href="https://abstract.properties/typescripts-usedefineforclassfields-is-slow.html" /><id>https://abstract.properties/typescripts-usedefineforclassfields-is-slow.html</id><updated>2022-10-20T00:00:00.000Z</updated><summary>A surprising performance regression for polyfilling spec-compliant field access</summary><author><name>Sufian Rhazi</name></author><category term="Programming"/><category term="TypeScript"/><category term="JavaScript"/><category term="Performance"/></entry><entry><title>Introducing Gooey</title><link rel="alternate" type="text/html" href="https://abstract.properties/introducing-gooey.html" /><id>https://abstract.properties/introducing-gooey.html</id><updated>2022-10-07T00:00:00.000Z</updated><summary>Gooey is a new, experimental web UI framework</summary><author><name>Sufian Rhazi</name></author><category term="Gooey"/><category term="JavaScript"/></entry><entry><title>TypeScript compile-time inference assertions</title><link rel="alternate" type="text/html" href="https://abstract.properties/typescript-compile-assertions.html" /><id>https://abstract.properties/typescript-compile-assertions.html</id><updated>2018-05-10T00:00:00.000Z</updated><summary>Using TypeScript 2.8 features to perform compile-time type inference assertions</summary><author><name>Sufian Rhazi</name></author><category term="Programming"/><category term="TypeScript"/><category term="Testing"/><category term="Metaprogramming"/></entry><entry><title>Interviewing in 2018</title><link rel="alternate" type="text/html" href="https://abstract.properties/interviewing-in-2018.html" /><id>https://abstract.properties/interviewing-in-2018.html</id><updated>2018-05-09T00:00:00.000Z</updated><summary>Reflecting on interviewing for senior IC/management positions</summary><author><name>Sufian Rhazi</name></author><category term="Programming"/><category term="Management"/><category term="Interviewing"/><category term="Software"/></entry><entry><title>Management: philosophy and expectations</title><link rel="alternate" type="text/html" href="https://abstract.properties/management-philosophy-and-expectations.html" /><id>https://abstract.properties/management-philosophy-and-expectations.html</id><updated>2017-06-02T00:00:00.000Z</updated><summary>What should you expect from me, and what should I expect from you?</summary><author><name>Sufian Rhazi</name></author><category term="management"/><category term="software"/><category term="leadership"/><category term="lessons learned"/></entry><entry><title>Management: what is it anyway?</title><link rel="alternate" type="text/html" href="https://abstract.properties/management-what-is-it-anyway.html" /><id>https://abstract.properties/management-what-is-it-anyway.html</id><updated>2017-06-01T00:00:00.000Z</updated><summary>What does a software engineering manager really do?</summary><author><name>Sufian Rhazi</name></author><category term="management"/><category term="software"/><category term="leadership"/><category term="lessons learned"/></entry><entry><title>Incentives and web browsers</title><link rel="alternate" type="text/html" href="https://abstract.properties/incentives-and-web-browsers.html" /><id>https://abstract.properties/incentives-and-web-browsers.html</id><updated>2017-03-04T00:00:00.000Z</updated><summary>What is funding the browsers we use?</summary><author><name>Sufian Rhazi</name></author><category term="Advertisements"/><category term="Web Browsers"/><category term="Privacy"/><category term="Software"/></entry><entry><title>Ten years in software: The value of a test</title><link rel="alternate" type="text/html" href="https://abstract.properties/ten-years-in-software--the-value-of-a-test.html" /><id>https://abstract.properties/ten-years-in-software--the-value-of-a-test.html</id><updated>2016-12-15T00:00:00.000Z</updated><summary>Reflections on the past ten years of my career: things I've learned. This lesson is about automated tests.</summary><author><name>Sufian Rhazi</name></author><category term="Software Engineering"/><category term="Programming"/><category term="Management"/><category term="Testing"/></entry><entry><title>Ten years in software: fear is the mind killer</title><link rel="alternate" type="text/html" href="https://abstract.properties/ten-years-in-software--fear-is-the-mind-killer.html" /><id>https://abstract.properties/ten-years-in-software--fear-is-the-mind-killer.html</id><updated>2016-10-31T00:00:00.000Z</updated><summary>Reflections on the past ten years of my career: things I've learned. This lesson is advice against fear.</summary><author><name>Sufian Rhazi</name></author><category term="Software Engineering"/><category term="Programming"/><category term="Management"/></entry><entry><title>Ten years in software: burnout is self inflicted</title><link rel="alternate" type="text/html" href="https://abstract.properties/ten-years-in-software--burnout-is-self-inflicted.html" /><id>https://abstract.properties/ten-years-in-software--burnout-is-self-inflicted.html</id><updated>2016-10-23T00:00:00.000Z</updated><summary>Reflections on the past ten years of my career: things I've learned. Here, I talk about my burnout.</summary><author><name>Sufian Rhazi</name></author><category term="Software Engineering"/><category term="Programming"/><category term="Management"/></entry><entry><title>Ten years in software: study other people's code</title><link rel="alternate" type="text/html" href="https://abstract.properties/ten-years-in-software--study-other-peoples-code.html" /><id>https://abstract.properties/ten-years-in-software--study-other-peoples-code.html</id><updated>2016-06-15T00:00:00.000Z</updated><summary>Reflections on the past ten years of my career: learn by studying other people's code</summary><author><name>Sufian Rhazi</name></author><category term="Software Engineering"/><category term="Programming"/><category term="Learning"/></entry><entry><title>Ten years in software: how to solve problems</title><link rel="alternate" type="text/html" href="https://abstract.properties/ten-years-in-software--how-to-solve-problems.html" /><id>https://abstract.properties/ten-years-in-software--how-to-solve-problems.html</id><updated>2016-03-05T00:00:00.000Z</updated><summary>Reflections on the past ten years of my career: things I've learned. The first lesson was profound: a method to solve any problem.</summary><author><name>Sufian Rhazi</name></author><category term="Software Engineering"/><category term="Programming"/><category term="Methodology"/></entry><entry><title>Exciting ES2015 Features</title><link rel="alternate" type="text/html" href="https://abstract.properties/exciting-es2015-features.html" /><id>https://abstract.properties/exciting-es2015-features.html</id><updated>2016-01-14T00:00:00.000Z</updated><summary>A dive into exciting features that aren't often talked about in ES2015.</summary><author><name>Sufian Rhazi</name></author><category term="Programming"/><category term="JavaScript"/><contributor><name>Daniel Espeset</name></contributor><contributor><name>Dan Na</name></contributor></entry><entry><title>Generators and Tasks</title><link rel="alternate" type="text/html" href="https://abstract.properties/generators-and-tasks.html" /><id>https://abstract.properties/generators-and-tasks.html</id><updated>2015-09-15T00:00:00.000Z</updated><summary>How asynchronous programming can be written in a synchronous style using generators.</summary><author><name>Sufian Rhazi</name></author><category term="Programming"/><category term="JavaScript"/></entry></feed>