<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>Johnny Lin</title><description>Johnny Lin — software engineer in Taiwan. Projects, case studies and notes on e-commerce, payments and the systems I build.</description><link>https://johnnyjclin.com/</link><item><title>SAA-C03 Study Map: Learn Decisions, Not a List of Services</title><link>https://johnnyjclin.com/blog/aws-saa-01-exam-map/</link><guid isPermaLink="true">https://johnnyjclin.com/blog/aws-saa-01-exam-map/</guid><description>Turn the four exam domains into a repeatable way to read requirements, eliminate distractors and select an architecture.</description><pubDate>Tue, 22 Sep 2026 00:00:00 GMT</pubDate><category>certifications</category><category>AWS</category><category>SAA-C03</category><category>exam strategy</category><category>Well-Architected</category></item><item><title>AWS Identity and Security: Follow the Request, Then Find the Deny</title><link>https://johnnyjclin.com/blog/aws-saa-02-identity-and-security/</link><guid isPermaLink="true">https://johnnyjclin.com/blog/aws-saa-02-identity-and-security/</guid><description>Connect IAM evaluation, Organizations, KMS, secrets, network protection and detection services into one security model.</description><pubDate>Tue, 22 Sep 2026 00:00:00 GMT</pubDate><category>certifications</category><category>AWS</category><category>IAM</category><category>KMS</category><category>Organizations</category><category>security</category></item><item><title>AWS Networking and Edge: Trace the Packet Before Choosing the Service</title><link>https://johnnyjclin.com/blog/aws-saa-03-networking-and-edge/</link><guid isPermaLink="true">https://johnnyjclin.com/blog/aws-saa-03-networking-and-edge/</guid><description>Connect subnets, routing, security, private access, hybrid links, DNS and global delivery through packet paths.</description><pubDate>Tue, 22 Sep 2026 00:00:00 GMT</pubDate><category>certifications</category><category>AWS</category><category>VPC</category><category>Route 53</category><category>CloudFront</category><category>Direct Connect</category></item><item><title>AWS Compute and Elasticity: Match Runtime, Scaling Unit, and Failure Model</title><link>https://johnnyjclin.com/blog/aws-saa-04-compute-and-elasticity/</link><guid isPermaLink="true">https://johnnyjclin.com/blog/aws-saa-04-compute-and-elasticity/</guid><description>Choose among EC2, Auto Scaling, load balancers, containers and Lambda by control, workload shape and state.</description><pubDate>Tue, 22 Sep 2026 00:00:00 GMT</pubDate><category>certifications</category><category>AWS</category><category>EC2</category><category>Auto Scaling</category><category>ELB</category><category>ECS</category><category>Lambda</category></item><item><title>AWS Storage: Choose by Access Pattern, Sharing, and Recovery</title><link>https://johnnyjclin.com/blog/aws-saa-05-storage/</link><guid isPermaLink="true">https://johnnyjclin.com/blog/aws-saa-05-storage/</guid><description>Compare object, block and file storage before choosing classes, replication, lifecycle and hybrid transfer tools.</description><pubDate>Tue, 22 Sep 2026 00:00:00 GMT</pubDate><category>certifications</category><category>AWS</category><category>S3</category><category>EBS</category><category>EFS</category><category>FSx</category><category>storage</category></item><item><title>AWS Databases and Caches: Start From the Data Contract</title><link>https://johnnyjclin.com/blog/aws-saa-06-databases-and-cache/</link><guid isPermaLink="true">https://johnnyjclin.com/blog/aws-saa-06-databases-and-cache/</guid><description>Choose RDS, Aurora, DynamoDB, ElastiCache or a purpose-built database from consistency, query and scale requirements.</description><pubDate>Tue, 22 Sep 2026 00:00:00 GMT</pubDate><category>certifications</category><category>AWS</category><category>RDS</category><category>Aurora</category><category>DynamoDB</category><category>ElastiCache</category></item><item><title>AWS Messaging and Serverless: Design Delivery Semantics First</title><link>https://johnnyjclin.com/blog/aws-saa-07-messaging-and-serverless/</link><guid isPermaLink="true">https://johnnyjclin.com/blog/aws-saa-07-messaging-and-serverless/</guid><description>Separate queues, pub/sub, streams and orchestration before connecting Lambda, API Gateway and event-driven workloads.</description><pubDate>Tue, 22 Sep 2026 00:00:00 GMT</pubDate><category>certifications</category><category>AWS</category><category>SQS</category><category>SNS</category><category>Kinesis</category><category>Lambda</category><category>EventBridge</category></item><item><title>AWS Observability and Governance: Metrics, Events, Audit, and Configuration</title><link>https://johnnyjclin.com/blog/aws-saa-08-observability-and-governance/</link><guid isPermaLink="true">https://johnnyjclin.com/blog/aws-saa-08-observability-and-governance/</guid><description>Stop mixing CloudWatch, EventBridge, CloudTrail and Config by asking what each service records and acts on.</description><pubDate>Tue, 22 Sep 2026 00:00:00 GMT</pubDate><category>certifications</category><category>AWS</category><category>CloudWatch</category><category>CloudTrail</category><category>Config</category><category>EventBridge</category></item><item><title>AWS Resilience and Migration: Let RTO and RPO Drive the Architecture</title><link>https://johnnyjclin.com/blog/aws-saa-09-resilience-dr-and-migration/</link><guid isPermaLink="true">https://johnnyjclin.com/blog/aws-saa-09-resilience-dr-and-migration/</guid><description>Separate high availability from disaster recovery, then map business recovery targets to replication and migration tools.</description><pubDate>Tue, 22 Sep 2026 00:00:00 GMT</pubDate><category>certifications</category><category>AWS</category><category>disaster recovery</category><category>RTO</category><category>RPO</category><category>migration</category></item><item><title>AWS Data and Analytics: Choose the Engine From the Question</title><link>https://johnnyjclin.com/blog/aws-saa-10-data-and-analytics/</link><guid isPermaLink="true">https://johnnyjclin.com/blog/aws-saa-10-data-and-analytics/</guid><description>Map ad hoc SQL, warehouses, ETL, streams, search, dashboards and clusters to the service that owns each job.</description><pubDate>Tue, 22 Sep 2026 00:00:00 GMT</pubDate><category>certifications</category><category>AWS</category><category>Athena</category><category>Redshift</category><category>Glue</category><category>Kinesis</category><category>analytics</category></item><item><title>SAA-C03 Final Review: Cost Decisions and the Traps Worth Memorizing</title><link>https://johnnyjclin.com/blog/aws-saa-11-cost-and-final-review/</link><guid isPermaLink="true">https://johnnyjclin.com/blog/aws-saa-11-cost-and-final-review/</guid><description>Finish the series with cost levers, frequently confused pairs and a compact method for reviewing practice questions.</description><pubDate>Tue, 22 Sep 2026 00:00:00 GMT</pubDate><category>certifications</category><category>AWS</category><category>SAA-C03</category><category>cost optimization</category><category>review</category></item><item><title>From Relations to SQL: The Model Behind a Query</title><link>https://johnnyjclin.com/blog/cs411-01-relational-model-and-sql/</link><guid isPermaLink="true">https://johnnyjclin.com/blog/cs411-01-relational-model-and-sql/</guid><description>Relations, schemas, keys, bags, NULL, and SQL&apos;s logical processing order—one mental model for reasoning about query results.</description><pubDate>Tue, 22 Sep 2026 00:00:00 GMT</pubDate><category>masters</category><category>relational model</category><category>SQL</category><category>NULL</category><category>query semantics</category></item><item><title>Joins, NULL, and Set Operations: Keeping Multi-Table Queries Correct</title><link>https://johnnyjclin.com/blog/cs411-02-joins-nulls-and-set-operations/</link><guid isPermaLink="true">https://johnnyjclin.com/blog/cs411-02-joins-nulls-and-set-operations/</guid><description>Join cardinality, outer-join filters, NULL-safe anti-joins, and when UNION ALL is the honest operation.</description><pubDate>Tue, 22 Sep 2026 00:00:00 GMT</pubDate><category>masters</category><category>SQL</category><category>JOIN</category><category>NULL</category><category>EXISTS</category><category>set operations</category></item><item><title>Aggregation, Views, and Updates: Choosing the Right Boundary</title><link>https://johnnyjclin.com/blog/cs411-03-aggregation-views-and-updates/</link><guid isPermaLink="true">https://johnnyjclin.com/blog/cs411-03-aggregation-views-and-updates/</guid><description>GROUP BY semantics, ordinary and materialized views, atomic updates, and when a stored routine is worth the coupling.</description><pubDate>Tue, 22 Sep 2026 00:00:00 GMT</pubDate><category>masters</category><category>SQL</category><category>GROUP BY</category><category>views</category><category>updates</category><category>stored procedures</category></item><item><title>Constraints and Triggers: Put Invariants Where Every Writer Must Obey</title><link>https://johnnyjclin.com/blog/cs411-04-constraints-and-triggers/</link><guid isPermaLink="true">https://johnnyjclin.com/blog/cs411-04-constraints-and-triggers/</guid><description>A practical hierarchy for NOT NULL, CHECK, UNIQUE, foreign keys, and triggers—with failure behavior you can test.</description><pubDate>Tue, 22 Sep 2026 00:00:00 GMT</pubDate><category>masters</category><category>SQL</category><category>constraints</category><category>triggers</category><category>integrity</category></item><item><title>From Conceptual Model to Tables: Preserving Meaning During Design</title><link>https://johnnyjclin.com/blog/cs411-05-conceptual-to-logical-design/</link><guid isPermaLink="true">https://johnnyjclin.com/blog/cs411-05-conceptual-to-logical-design/</guid><description>A repeatable path from requirements to entities, relationships, keys, cardinalities, and relational tables.</description><pubDate>Tue, 22 Sep 2026 00:00:00 GMT</pubDate><category>masters</category><category>data modeling</category><category>ER</category><category>UML</category><category>schema design</category></item><item><title>Functional Dependencies and Normalization: From Closure to 3NF and BCNF</title><link>https://johnnyjclin.com/blog/cs411-06-functional-dependencies-and-normalization/</link><guid isPermaLink="true">https://johnnyjclin.com/blog/cs411-06-functional-dependencies-and-normalization/</guid><description>A worked reasoning chain for attribute closure, candidate keys, minimal covers, lossless decomposition, 3NF, and BCNF.</description><pubDate>Tue, 22 Sep 2026 00:00:00 GMT</pubDate><category>masters</category><category>functional dependencies</category><category>normalization</category><category>3NF</category><category>BCNF</category></item><item><title>MongoDB Data Modeling: Flexible Schema Still Requires Design</title><link>https://johnnyjclin.com/blog/cs411-07-mongodb-document-model/</link><guid isPermaLink="true">https://johnnyjclin.com/blog/cs411-07-mongodb-document-model/</guid><description>Choose embedding or references from access patterns, growth bounds, update ownership, and measurable query plans.</description><pubDate>Tue, 22 Sep 2026 00:00:00 GMT</pubDate><category>masters</category><category>MongoDB</category><category>NoSQL</category><category>document model</category><category>indexing</category></item><item><title>Graph Data Modeling and Cypher: Make Relationships First-Class</title><link>https://johnnyjclin.com/blog/cs411-08-graph-model-and-cypher/</link><guid isPermaLink="true">https://johnnyjclin.com/blog/cs411-08-graph-model-and-cypher/</guid><description>Model nodes, relationships, direction, and traversal cost in Neo4j without turning every dataset into a graph.</description><pubDate>Tue, 22 Sep 2026 00:00:00 GMT</pubDate><category>masters</category><category>graph databases</category><category>Neo4j</category><category>Cypher</category><category>data modeling</category></item><item><title>B+ Trees and Hash Indexes: Choosing Through Page I/O</title><link>https://johnnyjclin.com/blog/cs411-09-bplus-tree-and-hash-index/</link><guid isPermaLink="true">https://johnnyjclin.com/blog/cs411-09-bplus-tree-and-hash-index/</guid><description>Tree structure, fanout math, update cost, runnable PostgreSQL, EXPLAIN interpretation, and a practical index decision table.</description><pubDate>Tue, 22 Sep 2026 00:00:00 GMT</pubDate><category>masters</category><category>B+ Tree</category><category>hash index</category><category>PostgreSQL</category><category>EXPLAIN</category><category>page I/O</category></item><item><title>Transactions, Serializability, and Isolation: Reasoning About Concurrent Writes</title><link>https://johnnyjclin.com/blog/cs411-10-transactions-serializability-and-isolation/</link><guid isPermaLink="true">https://johnnyjclin.com/blog/cs411-10-transactions-serializability-and-isolation/</guid><description>From ACID and schedules to conflict graphs, anomalies, isolation levels, locks, and evidence from two database sessions.</description><pubDate>Tue, 22 Sep 2026 00:00:00 GMT</pubDate><category>masters</category><category>transactions</category><category>serializability</category><category>isolation</category><category>concurrency</category></item><item><title>From Relational Algebra to Physical Operators: Where Query Cost Comes From</title><link>https://johnnyjclin.com/blog/cs411-11-relational-algebra-and-physical-operators/</link><guid isPermaLink="true">https://johnnyjclin.com/blog/cs411-11-relational-algebra-and-physical-operators/</guid><description>Separate logical meaning from scan, sort, hash, and join algorithms, then estimate their page-I/O cost.</description><pubDate>Tue, 22 Sep 2026 00:00:00 GMT</pubDate><category>masters</category><category>relational algebra</category><category>query execution</category><category>joins</category><category>I/O cost</category></item><item><title>Query Optimization: Cardinality Before Cost</title><link>https://johnnyjclin.com/blog/cs411-12-query-optimization/</link><guid isPermaLink="true">https://johnnyjclin.com/blog/cs411-12-query-optimization/</guid><description>Rule-based rewrites, selectivity estimates, join order, physical-plan cost, and a disciplined way to read estimation errors.</description><pubDate>Tue, 22 Sep 2026 00:00:00 GMT</pubDate><category>masters</category><category>query optimization</category><category>cardinality</category><category>EXPLAIN</category><category>join order</category></item><item><title>Relational, Document, Graph, or Raw Data: Choose From the Workload</title><link>https://johnnyjclin.com/blog/cs411-13-choosing-a-data-model/</link><guid isPermaLink="true">https://johnnyjclin.com/blog/cs411-13-choosing-a-data-model/</guid><description>Compare data models by invariants, access paths, update ownership, relationship depth, latency, and operational cost.</description><pubDate>Tue, 22 Sep 2026 00:00:00 GMT</pubDate><category>masters</category><category>data modeling</category><category>relational</category><category>MongoDB</category><category>graph</category><category>NoDB</category></item><item><title>Database Recovery: WAL, Checkpoints, Undo, and Redo</title><link>https://johnnyjclin.com/blog/cs411-14-recovery-wal-and-checkpoints/</link><guid isPermaLink="true">https://johnnyjclin.com/blog/cs411-14-recovery-wal-and-checkpoints/</guid><description>Understand what survives a crash, why write-ahead logging works, and how buffer policies determine undo and redo work.</description><pubDate>Tue, 22 Sep 2026 00:00:00 GMT</pubDate><category>masters</category><category>recovery</category><category>WAL</category><category>checkpoint</category><category>transaction</category><category>storage</category></item><item><title>Parallel and Distributed Databases: Optimize Data Movement First</title><link>https://johnnyjclin.com/blog/cs411-15-parallel-and-distributed-databases/</link><guid isPermaLink="true">https://johnnyjclin.com/blog/cs411-15-parallel-and-distributed-databases/</guid><description>Connect partitioning, replication, parallel joins, skew, distributed commit, and consensus without collapsing them into one topic.</description><pubDate>Tue, 22 Sep 2026 00:00:00 GMT</pubDate><category>masters</category><category>distributed database</category><category>parallel query</category><category>partitioning</category><category>replication</category><category>2PC</category></item><item><title>Information Integration: From Messy Sources to Trustworthy Data</title><link>https://johnnyjclin.com/blog/cs411-16-information-integration/</link><guid isPermaLink="true">https://johnnyjclin.com/blog/cs411-16-information-integration/</guid><description>A practical guide to schema matching, entity resolution, provenance, merge policy, ETL, and federated queries.</description><pubDate>Tue, 22 Sep 2026 00:00:00 GMT</pubDate><category>masters</category><category>data integration</category><category>ETL</category><category>entity resolution</category><category>provenance</category><category>data quality</category></item><item><title>Research Nexus: What a Real Dataset Changed About the Database Design</title><link>https://johnnyjclin.com/blog/cs411-17-research-nexus-design-review/</link><guid isPermaLink="true">https://johnnyjclin.com/blog/cs411-17-research-nexus-design-review/</guid><description>A design review of an 11-table research-discovery database built from DBLP-style citation data and Scholar enrichment.</description><pubDate>Tue, 22 Sep 2026 00:00:00 GMT</pubDate><category>masters</category><category>database project</category><category>MySQL</category><category>data modeling</category><category>ETL</category><category>research data</category></item><item><title>NoDB Revisited: Querying Raw Data Without Paying the Load Cost First</title><link>https://johnnyjclin.com/blog/cs411-18-nodb-paper-review/</link><guid isPermaLink="true">https://johnnyjclin.com/blog/cs411-18-nodb-paper-review/</guid><description>A practical critique of NoDB&apos;s data-to-query argument, selective parsing, positional maps, caching, and break-even point.</description><pubDate>Tue, 22 Sep 2026 00:00:00 GMT</pubDate><category>masters</category><category>NoDB</category><category>raw data</category><category>query execution</category><category>adaptive indexing</category><category>paper review</category></item><item><title>Cost-Aware Learned Caching: From LBSC to a Testable System Proposal</title><link>https://johnnyjclin.com/blog/cs411-19-cost-aware-learned-caching/</link><guid isPermaLink="true">https://johnnyjclin.com/blog/cs411-19-cost-aware-learned-caching/</guid><description>Why miss count is the wrong objective for heterogeneous storage, how LBSC learns eviction, and how to scope a credible follow-up experiment.</description><pubDate>Tue, 22 Sep 2026 00:00:00 GMT</pubDate><category>masters</category><category>caching</category><category>learned systems</category><category>LBSC</category><category>cost model</category><category>paper review</category></item><item><title>Clouds Are Distributed Systems With an Operating Model</title><link>https://johnnyjclin.com/blog/cs425-01-clouds-and-distributed-systems/</link><guid isPermaLink="true">https://johnnyjclin.com/blog/cs425-01-clouds-and-distributed-systems/</guid><description>Start from partial failure, concurrency, elasticity, virtualization, and the economic reason cloud systems exist.</description><pubDate>Tue, 22 Sep 2026 00:00:00 GMT</pubDate><category>masters</category><category>distributed systems</category><category>cloud computing</category><category>partial failure</category><category>elasticity</category></item><item><title>From Napster to Chord: Why Peer-to-Peer Systems Became Structured</title><link>https://johnnyjclin.com/blog/cs425-02-p2p-overlays-and-dhts/</link><guid isPermaLink="true">https://johnnyjclin.com/blog/cs425-02-p2p-overlays-and-dhts/</guid><description>Compare centralized indexes, flooding, supernodes, BitTorrent swarms, and DHT routing through state, messages, and failure behavior.</description><pubDate>Tue, 22 Sep 2026 00:00:00 GMT</pubDate><category>masters</category><category>peer to peer</category><category>Chord</category><category>DHT</category><category>BitTorrent</category><category>consistent hashing</category></item><item><title>Gossip, Membership, and Failure Detection Under Uncertainty</title><link>https://johnnyjclin.com/blog/cs425-03-gossip-membership-and-failure-detection/</link><guid isPermaLink="true">https://johnnyjclin.com/blog/cs425-03-gossip-membership-and-failure-detection/</guid><description>Connect epidemic dissemination, membership views, heartbeats, suspicion, false positives, and scalable failure detection.</description><pubDate>Tue, 22 Sep 2026 00:00:00 GMT</pubDate><category>masters</category><category>gossip</category><category>membership</category><category>failure detector</category><category>distributed systems</category></item><item><title>Time Without a Global Clock: Causality and Multicast Order</title><link>https://johnnyjclin.com/blog/cs425-04-time-causality-and-multicast-order/</link><guid isPermaLink="true">https://johnnyjclin.com/blog/cs425-04-time-causality-and-multicast-order/</guid><description>Move from clock synchronization to Lamport timestamps, vector clocks, FIFO, causal, and total-order multicast.</description><pubDate>Tue, 22 Sep 2026 00:00:00 GMT</pubDate><category>masters</category><category>Lamport clocks</category><category>vector clocks</category><category>multicast</category><category>causality</category></item><item><title>Global Snapshots: Capture Distributed State Without Stopping the World</title><link>https://johnnyjclin.com/blog/cs425-05-consistent-snapshots/</link><guid isPermaLink="true">https://johnnyjclin.com/blog/cs425-05-consistent-snapshots/</guid><description>Understand consistent cuts, in-transit messages, and the Chandy-Lamport marker algorithm.</description><pubDate>Tue, 22 Sep 2026 00:00:00 GMT</pubDate><category>masters</category><category>global snapshot</category><category>Chandy Lamport</category><category>consistent cut</category><category>distributed state</category></item><item><title>Consensus and Paxos: Majorities Preserve One Decision</title><link>https://johnnyjclin.com/blog/cs425-06-consensus-and-paxos/</link><guid isPermaLink="true">https://johnnyjclin.com/blog/cs425-06-consensus-and-paxos/</guid><description>Separate consensus safety from progress, then follow proposals, acceptors, ballots, and quorum intersection in Paxos.</description><pubDate>Tue, 22 Sep 2026 00:00:00 GMT</pubDate><category>masters</category><category>consensus</category><category>Paxos</category><category>quorum</category><category>fault tolerance</category></item><item><title>MapReduce: Move Computation to Data and Recompute on Failure</title><link>https://johnnyjclin.com/blog/cs425-07-mapreduce-at-scale/</link><guid isPermaLink="true">https://johnnyjclin.com/blog/cs425-07-mapreduce-at-scale/</guid><description>Understand map, shuffle, reduce, partitioning, stragglers, speculative execution, and lineage-based fault tolerance.</description><pubDate>Tue, 22 Sep 2026 00:00:00 GMT</pubDate><category>masters</category><category>MapReduce</category><category>Hadoop</category><category>distributed computing</category><category>fault tolerance</category></item><item><title>From CAP to Cassandra and HBase: Consistency Is an API Contract</title><link>https://johnnyjclin.com/blog/cs425-08-cap-consistency-and-nosql-storage/</link><guid isPermaLink="true">https://johnnyjclin.com/blog/cs425-08-cap-consistency-and-nosql-storage/</guid><description>Connect partition behavior, consistency models, quorums, LSM-style writes, Cassandra, and HBase without reducing design to CAP slogans.</description><pubDate>Tue, 22 Sep 2026 00:00:00 GMT</pubDate><category>masters</category><category>CAP theorem</category><category>consistency</category><category>Cassandra</category><category>HBase</category><category>NoSQL</category></item><item><title>Data Quality Starts With the Question, Not the Dataset</title><link>https://johnnyjclin.com/blog/cs513-01-data-quality-fitness-for-use/</link><guid isPermaLink="true">https://johnnyjclin.com/blog/cs513-01-data-quality-fitness-for-use/</guid><description>Use fitness for use, quality dimensions, and cost to decide what must be cleaned and what is already good enough.</description><pubDate>Tue, 22 Sep 2026 00:00:00 GMT</pubDate><category>masters</category><category>data quality</category><category>fitness for use</category><category>data cleaning</category><category>quality dimensions</category></item><item><title>Profile Before You Clean: Turn Suspicion Into Measurable Defects</title><link>https://johnnyjclin.com/blog/cs513-02-data-profiling-before-cleaning/</link><guid isPermaLink="true">https://johnnyjclin.com/blog/cs513-02-data-profiling-before-cleaning/</guid><description>Build a data profile that separates syntax, schema, semantic, duplicate, missingness, and distribution problems before changing values.</description><pubDate>Tue, 22 Sep 2026 00:00:00 GMT</pubDate><category>masters</category><category>data profiling</category><category>data quality</category><category>SQL</category><category>validation</category></item><item><title>Regular Expressions for Data Cleaning: Match Structure, Not Meaning</title><link>https://johnnyjclin.com/blog/cs513-03-regex-for-data-cleaning/</link><guid isPermaLink="true">https://johnnyjclin.com/blog/cs513-03-regex-for-data-cleaning/</guid><description>Build testable regexes for validation, extraction, and transformation while keeping parsing and semantic checks separate.</description><pubDate>Tue, 22 Sep 2026 00:00:00 GMT</pubDate><category>masters</category><category>regular expressions</category><category>regex</category><category>data transformation</category><category>validation</category></item><item><title>OpenRefine: Explore First, Transform Second, Export the Recipe</title><link>https://johnnyjclin.com/blog/cs513-04-openrefine-reproducible-cleaning/</link><guid isPermaLink="true">https://johnnyjclin.com/blog/cs513-04-openrefine-reproducible-cleaning/</guid><description>Use facets, clustering, GREL, reconciliation, and operation history without turning interactive cleaning into an unrepeatable black box.</description><pubDate>Tue, 22 Sep 2026 00:00:00 GMT</pubDate><category>masters</category><category>OpenRefine</category><category>data cleaning</category><category>clustering</category><category>GREL</category><category>reproducibility</category></item><item><title>Integrity Constraints as Executable Data-Quality Rules</title><link>https://johnnyjclin.com/blog/cs513-05-integrity-constraints-with-sql/</link><guid isPermaLink="true">https://johnnyjclin.com/blog/cs513-05-integrity-constraints-with-sql/</guid><description>Translate keys, references, domains, and cross-column business rules into violation queries and enforceable constraints.</description><pubDate>Tue, 22 Sep 2026 00:00:00 GMT</pubDate><category>masters</category><category>integrity constraints</category><category>SQL</category><category>data quality</category><category>validation</category></item><item><title>Datalog and Recursive Queries: A Small Language for Data Relationships</title><link>https://johnnyjclin.com/blog/cs513-06-datalog-and-recursive-queries/</link><guid isPermaLink="true">https://johnnyjclin.com/blog/cs513-06-datalog-and-recursive-queries/</guid><description>Understand facts, rules, joins, recursion, fixed points, and how the same reasoning appears in recursive SQL and data-quality checks.</description><pubDate>Tue, 22 Sep 2026 00:00:00 GMT</pubDate><category>masters</category><category>Datalog</category><category>recursive SQL</category><category>logic programming</category><category>data quality</category></item><item><title>Database Repair: When Several Clean Versions Are Possible</title><link>https://johnnyjclin.com/blog/cs513-07-database-repair-and-consistent-answers/</link><guid isPermaLink="true">https://johnnyjclin.com/blog/cs513-07-database-repair-and-consistent-answers/</guid><description>Reason about minimal repairs, repair policies, stable conclusions, and consistent query answers without hiding ambiguity.</description><pubDate>Tue, 22 Sep 2026 00:00:00 GMT</pubDate><category>masters</category><category>database repair</category><category>consistent query answering</category><category>integrity constraints</category><category>data quality</category></item><item><title>Data-Cleaning Workflows: Automation Is Not Reproducibility</title><link>https://johnnyjclin.com/blog/cs513-08-workflows-for-reproducible-cleaning/</link><guid isPermaLink="true">https://johnnyjclin.com/blog/cs513-08-workflows-for-reproducible-cleaning/</guid><description>Design cleaning pipelines around explicit inputs, outputs, parameters, dependencies, validation gates, and rerunnable evidence.</description><pubDate>Tue, 22 Sep 2026 00:00:00 GMT</pubDate><category>masters</category><category>workflow</category><category>reproducibility</category><category>data pipeline</category><category>automation</category></item><item><title>Data Provenance: Explain Where a Result Came From</title><link>https://johnnyjclin.com/blog/cs513-09-data-provenance-and-yesworkflow/</link><guid isPermaLink="true">https://johnnyjclin.com/blog/cs513-09-data-provenance-and-yesworkflow/</guid><description>Separate prospective and retrospective provenance, model lineage at useful granularity, and annotate scripts with YesWorkflow-style dependencies.</description><pubDate>Tue, 22 Sep 2026 00:00:00 GMT</pubDate><category>masters</category><category>data provenance</category><category>lineage</category><category>YesWorkflow</category><category>reproducibility</category></item><item><title>Taxonomy Alignment: Same Labels Do Not Guarantee the Same Meaning</title><link>https://johnnyjclin.com/blog/cs513-10-taxonomy-alignment/</link><guid isPermaLink="true">https://johnnyjclin.com/blog/cs513-10-taxonomy-alignment/</guid><description>Align hierarchical vocabularies with explicit semantic relations, logical constraints, possible worlds, and human review.</description><pubDate>Tue, 22 Sep 2026 00:00:00 GMT</pubDate><category>masters</category><category>taxonomy alignment</category><category>controlled vocabulary</category><category>ontology</category><category>data integration</category></item><item><title>Cleaning 17,545 Historical Menus Without Erasing the Evidence</title><link>https://johnnyjclin.com/blog/cs513-11-nypl-menu-cleaning-case-study/</link><guid isPermaLink="true">https://johnnyjclin.com/blog/cs513-11-nypl-menu-cleaning-case-study/</guid><description>A project retrospective on profiling, canonical cities and meals, conservative inference, constraints, provenance, and honest validation.</description><pubDate>Tue, 22 Sep 2026 00:00:00 GMT</pubDate><category>masters</category><category>case study</category><category>NYPL menus</category><category>data cleaning</category><category>provenance</category><category>Python</category><category>SQLite</category></item><item><title>MinHash and LSH: Find Near-Duplicates Without Comparing Every Pair</title><link>https://johnnyjclin.com/blog/msbd5001-01-minhash-and-lsh/</link><guid isPermaLink="true">https://johnnyjclin.com/blog/msbd5001-01-minhash-and-lsh/</guid><description>Turn documents into shingles, compress Jaccard similarity into signatures, then use LSH to generate a small candidate set.</description><pubDate>Tue, 22 Sep 2026 00:00:00 GMT</pubDate><category>masters</category><category>MinHash</category><category>LSH</category><category>Jaccard similarity</category><category>near duplicate</category><category>shingling</category></item><item><title>Association Rules: From Apriori Pruning to FP-Growth</title><link>https://johnnyjclin.com/blog/msbd5002-01-association-rules/</link><guid isPermaLink="true">https://johnnyjclin.com/blog/msbd5002-01-association-rules/</guid><description>Understand support, confidence and lift, then see why Apriori and FP-Growth spend work differently.</description><pubDate>Tue, 22 Sep 2026 00:00:00 GMT</pubDate><category>masters</category><category>association rules</category><category>Apriori</category><category>FP-growth</category><category>support</category><category>lift</category></item><item><title>Clustering and Classification: Similar Tools, Different Questions</title><link>https://johnnyjclin.com/blog/msbd5002-02-clustering-and-classification/</link><guid isPermaLink="true">https://johnnyjclin.com/blog/msbd5002-02-clustering-and-classification/</guid><description>Connect k-means, decision trees and SVMs through objectives, assumptions, boundaries and evaluation.</description><pubDate>Tue, 22 Sep 2026 00:00:00 GMT</pubDate><category>masters</category><category>clustering</category><category>k-means</category><category>decision tree</category><category>SVM</category><category>evaluation</category></item><item><title>Spark RDDs: Lazy Execution, Lineage, Partitions, and Shuffles</title><link>https://johnnyjclin.com/blog/msbd5003-01-spark-rdd-execution/</link><guid isPermaLink="true">https://johnnyjclin.com/blog/msbd5003-01-spark-rdd-execution/</guid><description>Read Spark performance from the execution model instead of treating transformations as ordinary collection methods.</description><pubDate>Tue, 22 Sep 2026 00:00:00 GMT</pubDate><category>masters</category><category>Spark</category><category>RDD</category><category>lineage</category><category>partition</category><category>shuffle</category></item><item><title>Spark DataFrames and SQL: Give the Optimizer More Information</title><link>https://johnnyjclin.com/blog/msbd5003-02-dataframes-and-spark-sql/</link><guid isPermaLink="true">https://johnnyjclin.com/blog/msbd5003-02-dataframes-and-spark-sql/</guid><description>Understand why schema, logical plans, Catalyst and columnar execution often beat opaque RDD code.</description><pubDate>Tue, 22 Sep 2026 00:00:00 GMT</pubDate><category>masters</category><category>Spark SQL</category><category>DataFrame</category><category>Catalyst</category><category>query plan</category><category>joins</category></item><item><title>Beyond Batch Spark: Streaming, Graphs, and Machine-Learning Pipelines</title><link>https://johnnyjclin.com/blog/msbd5003-03-streaming-graphs-and-ml/</link><guid isPermaLink="true">https://johnnyjclin.com/blog/msbd5003-03-streaming-graphs-and-ml/</guid><description>Use one execution foundation for incremental streams, property graphs and repeatable feature-to-model workflows.</description><pubDate>Tue, 22 Sep 2026 00:00:00 GMT</pubDate><category>masters</category><category>Spark Streaming</category><category>GraphFrames</category><category>MLlib</category><category>checkpoint</category><category>pipeline</category></item></channel></rss>