<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>Narcis Miclaus</title><description>I&apos;m a data engineer in Italy, working toward becoming a financial advisor. What I love about both: building solutions, solving problems, turning big complex goals into small clear steps. I write about it every day. Stay a while; maybe you&apos;ll learn something. Maybe I will too.</description><link>https://narcismiclaus.com/</link><item><title>Capstone: what you know now, where to go next</title><link>https://narcismiclaus.com/programming/python/60-capstone/</link><guid isPermaLink="true">https://narcismiclaus.com/programming/python/60-capstone/</guid><description>A look back at the 60 lessons, a look forward at where Python is heading, and the resources that take you from intermediate to expert.</description><pubDate>Fri, 19 Jun 2026 00:00:00 GMT</pubDate><category>python</category><category>course-summary</category><category>next-steps</category></item><item><title>A 30-minute health check on a Spark cluster you&apos;ve never seen</title><link>https://narcismiclaus.com/programming/pyspark/60-spark-cluster-health-check/</link><guid isPermaLink="true">https://narcismiclaus.com/programming/pyspark/60-spark-cluster-health-check/</guid><description>The capstone checklist: hand over your laptop, you have until 5pm to figure out what&apos;s broken.</description><pubDate>Thu, 18 Jun 2026 00:00:00 GMT</pubDate><category>pyspark</category><category>spark</category><category>dba</category><category>health-check</category><category>course-summary</category></item><item><title>AI vs ML in 2026: when to call an LLM, when to train</title><link>https://narcismiclaus.com/programming/python/59-ai-vs-ml/</link><guid isPermaLink="true">https://narcismiclaus.com/programming/python/59-ai-vs-ml/</guid><description>The decision that didn&apos;t exist five years ago: use a hosted model, fine-tune an open one, or train your own?</description><pubDate>Tue, 16 Jun 2026 00:00:00 GMT</pubDate><category>python</category><category>ai</category><category>llm</category><category>machine-learning</category><category>deployment</category></item><item><title>Adaptive Query Execution: Spark 3.x&apos;s killer feature</title><link>https://narcismiclaus.com/programming/pyspark/59-adaptive-query-execution/</link><guid isPermaLink="true">https://narcismiclaus.com/programming/pyspark/59-adaptive-query-execution/</guid><description>Dynamic partition coalescing, runtime skew handling, and join strategy switching — the configs to know and the cases AQE still can&apos;t help.</description><pubDate>Mon, 15 Jun 2026 00:00:00 GMT</pubDate><category>pyspark</category><category>spark</category><category>aqe</category><category>optimization</category><category>performance</category></item><item><title>Pre-trained models + transfer learning + Hugging Face</title><link>https://narcismiclaus.com/programming/python/58-transfer-learning/</link><guid isPermaLink="true">https://narcismiclaus.com/programming/python/58-transfer-learning/</guid><description>The realistic path from zero to a working deep learning model in 2026 — start with a pre-trained one, fine-tune on your data.</description><pubDate>Fri, 12 Jun 2026 00:00:00 GMT</pubDate><category>python</category><category>deep-learning</category><category>transfer-learning</category><category>huggingface</category><category>fine-tuning</category></item><item><title>Debugging slow Spark jobs: the 30-minute checklist</title><link>https://narcismiclaus.com/programming/pyspark/58-debugging-slow-jobs/</link><guid isPermaLink="true">https://narcismiclaus.com/programming/pyspark/58-debugging-slow-jobs/</guid><description>The systematic loop for figuring out what&apos;s wrong with a slow job — read the UI, find the slow stage, look at task skew, GC, shuffle volume, in that order.</description><pubDate>Thu, 11 Jun 2026 00:00:00 GMT</pubDate><category>pyspark</category><category>spark</category><category>debugging</category><category>performance</category><category>production</category></item><item><title>The training loop, in code</title><link>https://narcismiclaus.com/programming/python/57-training-loop/</link><guid isPermaLink="true">https://narcismiclaus.com/programming/python/57-training-loop/</guid><description>The five lines that turn a randomly-initialized network into a trained model — and the bookkeeping that makes them production-grade.</description><pubDate>Tue, 09 Jun 2026 00:00:00 GMT</pubDate><category>python</category><category>pytorch</category><category>training-loop</category><category>deep-learning</category></item><item><title>Memory tuning: executor memory, overhead, OOM diagnostics</title><link>https://narcismiclaus.com/programming/pyspark/57-memory-tuning/</link><guid isPermaLink="true">https://narcismiclaus.com/programming/pyspark/57-memory-tuning/</guid><description>The four configs that actually matter, what spill means, how to read an OOM stack trace, and the rule for sizing executors.</description><pubDate>Mon, 08 Jun 2026 00:00:00 GMT</pubDate><category>pyspark</category><category>spark</category><category>memory</category><category>tuning</category><category>production</category></item><item><title>PyTorch: the modern default</title><link>https://narcismiclaus.com/programming/python/56-pytorch/</link><guid isPermaLink="true">https://narcismiclaus.com/programming/python/56-pytorch/</guid><description>Tensors, autograd, the nn module, and the Python-feel that made PyTorch win.</description><pubDate>Fri, 05 Jun 2026 00:00:00 GMT</pubDate><category>python</category><category>pytorch</category><category>deep-learning</category><category>tensors</category></item><item><title>Reading execution plans: .explain(True), parsed to physical</title><link>https://narcismiclaus.com/programming/pyspark/56-execution-plans/</link><guid isPermaLink="true">https://narcismiclaus.com/programming/pyspark/56-execution-plans/</guid><description>How to read every line of .explain() output, the operators that matter, and the optimizer steps that produce them.</description><pubDate>Thu, 04 Jun 2026 00:00:00 GMT</pubDate><category>pyspark</category><category>spark</category><category>explain</category><category>execution-plan</category><category>catalyst</category></item><item><title>Neural networks in plain English</title><link>https://narcismiclaus.com/programming/python/55-neural-networks-plain/</link><guid isPermaLink="true">https://narcismiclaus.com/programming/python/55-neural-networks-plain/</guid><description>What a neural network actually is, why backpropagation works, and where deep learning genuinely beats classical ML.</description><pubDate>Tue, 02 Jun 2026 00:00:00 GMT</pubDate><category>python</category><category>deep-learning</category><category>neural-networks</category><category>fundamentals</category></item><item><title>The Spark UI: the most important tool you&apos;ll learn</title><link>https://narcismiclaus.com/programming/pyspark/55-spark-ui/</link><guid isPermaLink="true">https://narcismiclaus.com/programming/pyspark/55-spark-ui/</guid><description>A guided tour of every tab — Jobs, Stages, Tasks, SQL, Storage, Executors — and what each one tells you when something is wrong.</description><pubDate>Mon, 01 Jun 2026 00:00:00 GMT</pubDate><category>pyspark</category><category>spark</category><category>ui</category><category>debugging</category><category>production</category></item><item><title>ML project: a classification problem, end to end</title><link>https://narcismiclaus.com/programming/python/54-ml-project/</link><guid isPermaLink="true">https://narcismiclaus.com/programming/python/54-ml-project/</guid><description>From raw CSV to deployed model: the lessons of Module 9 made tactile.</description><pubDate>Fri, 29 May 2026 00:00:00 GMT</pubDate><category>python</category><category>machine-learning</category><category>project</category><category>end-to-end</category><category>classification</category></item><item><title>Output modes and idempotent sinks: foreachBatch and the upsert pattern</title><link>https://narcismiclaus.com/programming/pyspark/54-output-modes-and-sinks/</link><guid isPermaLink="true">https://narcismiclaus.com/programming/pyspark/54-output-modes-and-sinks/</guid><description>Append vs update vs complete, the sinks Spark ships, and the foreachBatch escape hatch for everything else.</description><pubDate>Thu, 28 May 2026 00:00:00 GMT</pubDate><category>pyspark</category><category>spark</category><category>streaming</category><category>sinks</category><category>idempotent</category><category>foreach-batch</category></item><item><title>Hyperparameter tuning: grid, random, bayesian, optuna</title><link>https://narcismiclaus.com/programming/python/53-hyperparameter-tuning/</link><guid isPermaLink="true">https://narcismiclaus.com/programming/python/53-hyperparameter-tuning/</guid><description>The four search strategies, when each makes sense, and why optuna is the 2026 default.</description><pubDate>Tue, 26 May 2026 00:00:00 GMT</pubDate><category>python</category><category>machine-learning</category><category>hyperparameters</category><category>optuna</category><category>gridsearch</category></item><item><title>Stateful operations: aggregations, sessions, and the state store</title><link>https://narcismiclaus.com/programming/pyspark/53-stateful-operations/</link><guid isPermaLink="true">https://narcismiclaus.com/programming/pyspark/53-stateful-operations/</guid><description>Where Spark Streaming keeps the state between micro-batches, the standard stateful patterns, and when to drop down to mapGroupsWithState.</description><pubDate>Mon, 25 May 2026 00:00:00 GMT</pubDate><category>pyspark</category><category>spark</category><category>streaming</category><category>state</category><category>sessionization</category></item><item><title>Linear and regularized models: when simple wins</title><link>https://narcismiclaus.com/programming/python/52-linear-models/</link><guid isPermaLink="true">https://narcismiclaus.com/programming/python/52-linear-models/</guid><description>Why linear models are still the right answer surprisingly often — and the regularization tricks that make them production-grade.</description><pubDate>Fri, 22 May 2026 00:00:00 GMT</pubDate><category>python</category><category>machine-learning</category><category>linear-regression</category><category>logistic-regression</category><category>regularization</category></item><item><title>Watermarks and event time: the part most beginners get wrong</title><link>https://narcismiclaus.com/programming/pyspark/52-watermarks-event-time/</link><guid isPermaLink="true">https://narcismiclaus.com/programming/pyspark/52-watermarks-event-time/</guid><description>Why event time matters more than processing time, what a watermark actually does, and the worked example with concrete timestamps.</description><pubDate>Thu, 21 May 2026 00:00:00 GMT</pubDate><category>pyspark</category><category>spark</category><category>streaming</category><category>watermarks</category><category>event-time</category></item><item><title>Tree-based models: random forest, XGBoost, LightGBM</title><link>https://narcismiclaus.com/programming/python/51-tree-models/</link><guid isPermaLink="true">https://narcismiclaus.com/programming/python/51-tree-models/</guid><description>Why trees dominate tabular ML, the differences between the three big libraries, and the hyperparameters that matter.</description><pubDate>Tue, 19 May 2026 00:00:00 GMT</pubDate><category>python</category><category>machine-learning</category><category>random-forest</category><category>xgboost</category><category>lightgbm</category><category>gradient-boosting</category></item><item><title>Kafka source: the most common production ingest</title><link>https://narcismiclaus.com/programming/pyspark/51-kafka-source/</link><guid isPermaLink="true">https://narcismiclaus.com/programming/pyspark/51-kafka-source/</guid><description>How Spark reads from Kafka, the offset semantics, and the at-least-once vs exactly-once question.</description><pubDate>Mon, 18 May 2026 00:00:00 GMT</pubDate><category>pyspark</category><category>spark</category><category>kafka</category><category>streaming</category><category>structured-streaming</category></item><item><title>Feature engineering: the part that matters most</title><link>https://narcismiclaus.com/programming/python/50-feature-engineering/</link><guid isPermaLink="true">https://narcismiclaus.com/programming/python/50-feature-engineering/</guid><description>The transforms that turn raw data into model fuel — and the ones that quietly leak information from the future.</description><pubDate>Fri, 15 May 2026 00:00:00 GMT</pubDate><category>python</category><category>machine-learning</category><category>features</category><category>preprocessing</category></item><item><title>Structured Streaming basics: readStream, writeStream, triggers</title><link>https://narcismiclaus.com/programming/pyspark/50-structured-streaming-basics/</link><guid isPermaLink="true">https://narcismiclaus.com/programming/pyspark/50-structured-streaming-basics/</guid><description>The streaming entry points, the trigger semantics, and the checkpoint that everything depends on.</description><pubDate>Thu, 14 May 2026 00:00:00 GMT</pubDate><category>pyspark</category><category>spark</category><category>streaming</category><category>structured-streaming</category><category>dataframe</category></item><item><title>scikit-learn: the standard ML library tour</title><link>https://narcismiclaus.com/programming/python/49-scikit-learn/</link><guid isPermaLink="true">https://narcismiclaus.com/programming/python/49-scikit-learn/</guid><description>The fit/predict pattern that underpins everything, the model categories, and the pipelines that make code reproducible.</description><pubDate>Tue, 12 May 2026 00:00:00 GMT</pubDate><category>python</category><category>scikit-learn</category><category>machine-learning</category><category>ml</category></item><item><title>Why streaming, and what &apos;streaming&apos; even means in Spark</title><link>https://narcismiclaus.com/programming/pyspark/49-why-streaming/</link><guid isPermaLink="true">https://narcismiclaus.com/programming/pyspark/49-why-streaming/</guid><description>Bounded vs unbounded data, batch-vs-streaming as a continuum, and why DStreams are deprecated in favor of Structured Streaming.</description><pubDate>Mon, 11 May 2026 00:00:00 GMT</pubDate><category>pyspark</category><category>spark</category><category>streaming</category><category>structured-streaming</category><category>fundamentals</category></item><item><title>The 80% architecture</title><link>https://narcismiclaus.com/programming/architecture/the-80-percent-architecture/</link><guid isPermaLink="true">https://narcismiclaus.com/programming/architecture/the-80-percent-architecture/</guid><description>The default modern SaaS stack that fits most companies. What it is, why it&apos;s standard, and when to deviate.</description><pubDate>Fri, 08 May 2026 00:00:00 GMT</pubDate><category>architecture</category><category>reference</category><category>saas</category><category>default-stack</category></item><item><title>Why your best work happens when you&apos;re not at the keyboard</title><link>https://narcismiclaus.com/programming/career/best-work-not-at-keyboard/</link><guid isPermaLink="true">https://narcismiclaus.com/programming/career/best-work-not-at-keyboard/</guid><description>The walks, the showers, the runs. Hard problems unblock when your conscious brain stops chewing on them. Why protecting non-coding time is part of the job.</description><pubDate>Fri, 08 May 2026 00:00:00 GMT</pubDate><category>career</category><category>productivity</category><category>learning</category><category>deep-work</category></item><item><title>Numerical project: a real analysis</title><link>https://narcismiclaus.com/programming/python/48-numerical-project/</link><guid isPermaLink="true">https://narcismiclaus.com/programming/python/48-numerical-project/</guid><description>Take a public dataset and run a complete numerical analysis: descriptive stats, fits, hypothesis tests, plots.</description><pubDate>Fri, 08 May 2026 00:00:00 GMT</pubDate><category>python</category><category>numpy</category><category>scipy</category><category>project</category><category>analysis</category></item><item><title>Schema evolution: when columns change underneath you</title><link>https://narcismiclaus.com/programming/pyspark/48-schema-evolution/</link><guid isPermaLink="true">https://narcismiclaus.com/programming/pyspark/48-schema-evolution/</guid><description>Why schema-on-read formats handle change badly, why Avro+registry handles it well, and the Delta/Iceberg way of getting both.</description><pubDate>Thu, 07 May 2026 00:00:00 GMT</pubDate><category>pyspark</category><category>spark</category><category>schema</category><category>parquet</category><category>avro</category><category>evolution</category></item><item><title>Jupyter, notebooks, and when to leave them</title><link>https://narcismiclaus.com/programming/python/47-jupyter-and-notebooks/</link><guid isPermaLink="true">https://narcismiclaus.com/programming/python/47-jupyter-and-notebooks/</guid><description>Why notebooks are addictive, where they shine, and the moment you should stop and write a real script.</description><pubDate>Tue, 05 May 2026 00:00:00 GMT</pubDate><category>python</category><category>jupyter</category><category>notebooks</category><category>vscode</category><category>kernel</category></item><item><title>Cloud storage: S3, GCS, Azure Blob — what changes</title><link>https://narcismiclaus.com/programming/pyspark/47-cloud-storage/</link><guid isPermaLink="true">https://narcismiclaus.com/programming/pyspark/47-cloud-storage/</guid><description>The consistency caveats, the rename problem, and why direct-write committers exist.</description><pubDate>Mon, 04 May 2026 00:00:00 GMT</pubDate><category>pyspark</category><category>spark</category><category>s3</category><category>cloud</category><category>storage</category><category>hadoop</category></item><item><title>Capstone: design a complete architecture for a fictional company at three scales</title><link>https://narcismiclaus.com/programming/architecture/80-capstone/</link><guid isPermaLink="true">https://narcismiclaus.com/programming/architecture/80-capstone/</guid><description>Eighty lessons of system architecture, condensed into one design exercise. The same fictional SaaS company, three scales, three architectures, and a guided tour of what changes and why. The closing lesson of the course.</description><pubDate>Fri, 01 May 2026 00:00:00 GMT</pubDate><category>architecture</category><category>capstone</category><category>course-summary</category></item><item><title>The Python features I learned too late</title><link>https://narcismiclaus.com/programming/python/features-learned-too-late/</link><guid isPermaLink="true">https://narcismiclaus.com/programming/python/features-learned-too-late/</guid><description>Match statements, the walrus operator, f-string debugging, dataclasses, and other Python features that would have saved me hours if I&apos;d known about them sooner.</description><pubDate>Fri, 01 May 2026 00:00:00 GMT</pubDate><category>python</category><category>tips</category><category>modern-python</category></item><item><title>Writing to JDBC: parallelism, batches, idempotency</title><link>https://narcismiclaus.com/programming/pyspark/46-writing-jdbc/</link><guid isPermaLink="true">https://narcismiclaus.com/programming/pyspark/46-writing-jdbc/</guid><description>How to write Spark output back to a relational database without crushing it, breaking transactions, or losing data on retry.</description><pubDate>Thu, 30 Apr 2026 00:00:00 GMT</pubDate><category>pyspark</category><category>spark</category><category>jdbc</category><category>write</category><category>transactions</category></item><item><title>When to leave a job (and when to stay)</title><link>https://narcismiclaus.com/programming/career/when-to-leave/</link><guid isPermaLink="true">https://narcismiclaus.com/programming/career/when-to-leave/</guid><description>The signals that mean it&apos;s time to go and the ones that just mean you&apos;re having a bad month. A framework for the decision people most often get wrong.</description><pubDate>Wed, 29 Apr 2026 00:00:00 GMT</pubDate><category>career</category><category>decision-making</category><category>italy</category><category>growth</category></item><item><title>SciPy: the toolbox most people forget about</title><link>https://narcismiclaus.com/programming/python/45-scipy/</link><guid isPermaLink="true">https://narcismiclaus.com/programming/python/45-scipy/</guid><description>Statistics, optimization, signal processing, sparse matrices — the standard library of scientific Python.</description><pubDate>Tue, 28 Apr 2026 00:00:00 GMT</pubDate><category>python</category><category>scipy</category><category>statistics</category><category>optimization</category></item><item><title>ML platform architecture: feature store, model registry, serving</title><link>https://narcismiclaus.com/programming/architecture/79-ml-platform/</link><guid isPermaLink="true">https://narcismiclaus.com/programming/architecture/79-ml-platform/</guid><description>The five layers a modern ML platform standardised on, the train-serve skew problem the feature store was invented to solve, and the build-versus-buy calculus for each layer in 2026.</description><pubDate>Mon, 27 Apr 2026 00:00:00 GMT</pubDate><category>architecture</category><category>ml-platform</category><category>feature-store</category><category>mlflow</category><category>serving</category></item><item><title>Reading from JDBC: pulling from Postgres, MySQL, SQL Server</title><link>https://narcismiclaus.com/programming/pyspark/45-reading-jdbc/</link><guid isPermaLink="true">https://narcismiclaus.com/programming/pyspark/45-reading-jdbc/</guid><description>The JDBC source connector, the partitionColumn trick, and why a naive read kills your source database.</description><pubDate>Mon, 27 Apr 2026 00:00:00 GMT</pubDate><category>pyspark</category><category>spark</category><category>jdbc</category><category>postgres</category><category>mysql</category><category>parallel-read</category></item><item><title>Privacy and compliance: GDPR, CCPA, data residency</title><link>https://narcismiclaus.com/programming/architecture/78-privacy-compliance/</link><guid isPermaLink="true">https://narcismiclaus.com/programming/architecture/78-privacy-compliance/</guid><description>Privacy regulations as architectural drivers. Right to erasure, data residency, customer-managed keys, and the consent and audit infrastructure compliance frameworks require.</description><pubDate>Fri, 24 Apr 2026 00:00:00 GMT</pubDate><category>architecture</category><category>gdpr</category><category>ccpa</category><category>privacy</category><category>compliance</category><category>residency</category></item><item><title>Plotting: matplotlib, seaborn, plotly — picking yours</title><link>https://narcismiclaus.com/programming/python/44-plotting/</link><guid isPermaLink="true">https://narcismiclaus.com/programming/python/44-plotting/</guid><description>Three plotting libraries, three philosophies, and which one to reach for given the audience.</description><pubDate>Fri, 24 Apr 2026 00:00:00 GMT</pubDate><category>python</category><category>matplotlib</category><category>seaborn</category><category>plotly</category><category>visualization</category></item><item><title>ORC, Avro, Delta: the alternatives and when each wins</title><link>https://narcismiclaus.com/programming/pyspark/44-orc-avro-delta/</link><guid isPermaLink="true">https://narcismiclaus.com/programming/pyspark/44-orc-avro-delta/</guid><description>Three format families that aren&apos;t Parquet, when each is the right choice, and why Delta has been quietly taking over.</description><pubDate>Thu, 23 Apr 2026 00:00:00 GMT</pubDate><category>pyspark</category><category>spark</category><category>orc</category><category>avro</category><category>delta</category><category>file-format</category></item><item><title>Security architecture: least privilege, defense in depth</title><link>https://narcismiclaus.com/programming/architecture/77-security-architecture/</link><guid isPermaLink="true">https://narcismiclaus.com/programming/architecture/77-security-architecture/</guid><description>The security principles every system needs as load-bearing architecture. Least privilege, defense in depth, zero trust, and the IAM and network controls that turn principles into reality.</description><pubDate>Wed, 22 Apr 2026 00:00:00 GMT</pubDate><category>architecture</category><category>security</category><category>iam</category><category>least-privilege</category></item><item><title>NumPy: arrays, broadcasting, the foundation of scientific Python</title><link>https://narcismiclaus.com/programming/python/43-numpy/</link><guid isPermaLink="true">https://narcismiclaus.com/programming/python/43-numpy/</guid><description>What an ndarray is, why broadcasting changes how you write loops, and the small set of functions that cover most use cases.</description><pubDate>Tue, 21 Apr 2026 00:00:00 GMT</pubDate><category>python</category><category>numpy</category><category>arrays</category><category>broadcasting</category><category>vectorization</category></item><item><title>Disaster recovery: RTO, RPO, the drill</title><link>https://narcismiclaus.com/programming/architecture/76-disaster-recovery/</link><guid isPermaLink="true">https://narcismiclaus.com/programming/architecture/76-disaster-recovery/</guid><description>What disaster recovery actually means in practice. The four DR tiers, RTO and RPO as design dials, and the discipline of the drill that proves the plan works.</description><pubDate>Mon, 20 Apr 2026 00:00:00 GMT</pubDate><category>architecture</category><category>disaster-recovery</category><category>rto</category><category>rpo</category><category>backups</category></item><item><title>Parquet: why it&apos;s the default for a reason</title><link>https://narcismiclaus.com/programming/pyspark/43-parquet/</link><guid isPermaLink="true">https://narcismiclaus.com/programming/pyspark/43-parquet/</guid><description>Columnar storage explained, compression codecs, predicate pushdown, and the row-group structure that makes selective reads fast.</description><pubDate>Mon, 20 Apr 2026 00:00:00 GMT</pubDate><category>pyspark</category><category>spark</category><category>parquet</category><category>file-format</category><category>columnar</category></item><item><title>Multi-region deployments: active-active, active-passive, follow-the-sun</title><link>https://narcismiclaus.com/programming/architecture/75-multi-region/</link><guid isPermaLink="true">https://narcismiclaus.com/programming/architecture/75-multi-region/</guid><description>Why teams go multi-region (latency, DR, compliance, capacity), the three deployment shapes, the hard problems (replication, conflicts, cost), and when not to bother.</description><pubDate>Fri, 17 Apr 2026 00:00:00 GMT</pubDate><category>architecture</category><category>multi-region</category><category>geography</category><category>latency</category></item><item><title>Data engineering project: build a real pipeline</title><link>https://narcismiclaus.com/programming/python/42-data-engineering-project/</link><guid isPermaLink="true">https://narcismiclaus.com/programming/python/42-data-engineering-project/</guid><description>From source to destination, with monitoring, idempotency, and a schedule. The lessons of Module 7 made tactile.</description><pubDate>Fri, 17 Apr 2026 00:00:00 GMT</pubDate><category>python</category><category>data-engineering</category><category>pipeline</category><category>project</category><category>end-to-end</category></item><item><title>Tungsten: code generation and the columnar memory layout</title><link>https://narcismiclaus.com/programming/pyspark/42-tungsten/</link><guid isPermaLink="true">https://narcismiclaus.com/programming/pyspark/42-tungsten/</guid><description>How Spark fuses operations into compiled code, the off-heap columnar format, and why DataFrame Spark is fast.</description><pubDate>Thu, 16 Apr 2026 00:00:00 GMT</pubDate><category>pyspark</category><category>spark</category><category>tungsten</category><category>performance</category><category>internals</category></item><item><title>A 30-minute SQL Server health check: the script you actually run</title><link>https://narcismiclaus.com/programming/sql-server/40-health-check/</link><guid isPermaLink="true">https://narcismiclaus.com/programming/sql-server/40-health-check/</guid><description>The ordered checklist I run on any SQL Server I&apos;ve never seen before. Printable, pasteable, and the closing lesson of the course.</description><pubDate>Thu, 16 Apr 2026 00:00:00 GMT</pubDate><category>sql-server</category><category>dba</category><category>health-check</category><category>course-summary</category></item><item><title>Luca at 18: what I wish someone had told me</title><link>https://narcismiclaus.com/finance/why-im-writing-about-money/</link><guid isPermaLink="true">https://narcismiclaus.com/finance/why-im-writing-about-money/</guid><description>A letter to a first-year university student. Three concrete things to do in year one. The capstone of the course — everything in 2,500 words.</description><pubDate>Thu, 16 Apr 2026 00:00:00 GMT</pubDate><category>intro</category><category>personal-finance</category><category>capstone</category><category>luca</category></item><item><title>Event-driven architecture: saga, choreography, orchestration</title><link>https://narcismiclaus.com/programming/architecture/74-event-driven-architecture/</link><guid isPermaLink="true">https://narcismiclaus.com/programming/architecture/74-event-driven-architecture/</guid><description>Services that talk by emitting events, the choreography vs orchestration choice, the saga pattern, and the 2026 toolset (Temporal, Step Functions, Camunda, Argo).</description><pubDate>Wed, 15 Apr 2026 00:00:00 GMT</pubDate><category>architecture</category><category>event-driven</category><category>saga</category><category>choreography</category><category>orchestration</category></item></channel></rss>