Android 17 için “Handoff” benzeri “Continue On” altyapısı duyuruldu

Android 17

Android 17Google, I/O 2026 etkinliğinde Android 17 işletim sistemi için geliştirilen, Apple’ın Handoff sistemine benzer “Continue On” altyapısını da duyurdu. Bu altyapı, kullanıcıların Android cihazlarını uygulama kullanımları özelinde birbirine bağlamasına imkan tanıyor. Örneğin telefondaki bir uygulamada açılan doküman ya da e-posta, doğrudan tablette de görünüyor ve tek dokunmayla açılabiliyor. Zaman kazandıran bu altyapı için her iki cihazda da aynı hesabın kullanılması gerekiyor.

Android 17 için “Handoff” benzeri “Continue On” altyapısı duyuruldu yazısı ilk olarak Teknoloji haberleri – LOG üzerinde yayınlandı.

Detecting Silent Model Failure: Drift Monitoring That Actually Works

TL;DR: Most drift monitoring setups alert on the wrong thing. Feature distribution drift is cheap to compute and almost always misleading. Prediction drift plus a delayed ground-truth feedback loop catches the failures that actually cost money. Here is the setup I use at Yokoy.

A model that returns HTTP 200 with a plausible-looking float is the worst kind of broken. No exception, no pager, no Slack message. The metric only moves three weeks later when finance reviews the numbers.

I have spent the last two years rebuilding the monitoring story for our expense classification models. What follows is what I kept after throwing out the rest.

The mistake I keep seeing

Teams instrument input feature drift first because it is the easiest thing to compute. Pull yesterday’s feature values, pull today’s, run a KS test on each column, alert when p < 0.05.

This generates noise. A lot of noise.

Features drift constantly for reasons that have nothing to do with model quality. A new customer onboards, the merchant category distribution shifts, you get a Slack ping at 03:00 for something that does not matter. After two weeks of this, on-call mutes the channel. After four weeks, the channel is deleted.

The problem is not the test. The problem is that input drift is a weak proxy for what you actually care about: did model performance degrade.

What to monitor instead

Three signals, ranked by cost and value.

Signal Compute cost Latency to detect False positive rate
Input feature drift Low Hours High
Prediction distribution drift Low Hours Medium
Performance vs delayed labels Medium Days to weeks Low

Prediction drift is the underrated one. If your model started returning a different distribution of outputs without you shipping new weights, something upstream broke. Could be feature pipeline. Could be a provider returning malformed embeddings. Could be a real population shift. All of these are worth investigating.

The detection logic is short:

from scipy.stats import wasserstein_distance
import numpy as np

def prediction_drift_score(reference: np.ndarray, current: np.ndarray) -> float:
    return wasserstein_distance(reference, current)

# reference = predictions from the validation window when the model was promoted
# current = predictions from the last 24h of production traffic
# alert when score exceeds the 99th percentile of bootstrapped baseline scores

Wasserstein over KS for prediction monitoring. KS is hypersensitive to large samples and you will have large samples in production. With 500k predictions per day, KS rejects the null hypothesis for differences nobody cares about.

The feedback loop is non-negotiable

For expense classification, ground truth arrives when a human approves or corrects the prediction. Median latency is four days. P95 is three weeks.

We log every prediction with a join key and write it to a Parquet table partitioned by date. When labels arrive, a nightly Kubeflow pipeline joins them and computes per-segment performance: accuracy per merchant category, per country, per customer tier.

The per-segment view is what surfaces the failures. Aggregate accuracy stays at 94% while accuracy on a specific Swiss VAT category collapses to 71%. The aggregate view would never have caught it.

# Simplified pipeline component spec
- name: compute-segmented-metrics
  inputs:
    predictions_table: gs://yokoy-ml/predictions/dt={{date}}
    labels_table: gs://yokoy-ml/labels/dt={{date}}
  outputs:
    metrics_table: gs://yokoy-ml/metrics/dt={{date}}
  segments:
    - merchant_category
    - country
    - customer_tier
  resource_request:
    cpu: 4
    memory: 16Gi

The cost: roughly 12 minutes of compute per day on our volume. The value: every regression we caught in the last 18 months was caught here, not by drift monitoring.

Where input drift still earns its place

I have not fully abandoned input drift. It is useful as a debugging tool after the fact. When per-segment accuracy drops, the first question is which features moved. Having the historical drift scores already computed means the investigation starts with a query instead of a backfill.

So compute it, store it, do not alert on it.

A note on LLM-based features

We added an LLM-derived feature last year for invoice text classification, routed through a gateway in front of multiple providers (Bifrost handles this for us, though others like LiteLLM or Portkey cover the same ground). The drift profile changed immediately. Provider model updates, even minor ones, shift the feature distribution in ways you cannot see from your side.

Lesson: pin the provider model version explicitly. Treat a provider model change as a feature pipeline change. Re-run the validation set. This sounds obvious until the day a default model alias updates and you find out from the metrics.

Trade-offs and Limitations

Per-segment monitoring has a cardinality problem. With three segments of 50, 30, and 5 values you get 7500 cells. Most are empty or have too few samples for meaningful metrics. We use a minimum sample threshold of 100 per cell per day and accept that long-tail segments take longer to detect issues in.

Delayed labels mean delayed detection. For models where the label takes weeks, you need a complementary fast signal. Prediction drift fills part of that gap but it is a leading indicator, not a measurement.

Wasserstein distance has no native interpretation in production units. You bootstrap a baseline and alert on deviation from it. This works but it is not as crisp as “accuracy dropped 3 points.”

Storing every prediction with features for joinability is expensive. We compress aggressively and tier old partitions to cold storage after 90 days. Plan the storage cost before you build it, not after.

Further Reading

Asya borsaları negatif seyrediyor

Asya borsaları, yükselen tahvil getirileri ve Orta Doğu’daki gerilimlerin etkisiyle negatif seyrediyor. Petrol fiyatlarının yüksek kalması enflasyon endişelerini artırırken, Japonya ve Güney Kore’de endeksler düştü. Çin’de kredi faizleri sabit kaldı, Samsung’ta grev kararı hisseleri geriletti.

Google, Gemini 3.5 model ailesini tanıttı

Google, düzenlediği Google I/O 2026 etkinliğinde Gemini model ailesinin yeni neslini tanıttı. Şirketin duyurduğu Gemini 3.5 Flash modeli; hız, düşük gecikme süresi ve agent tabanlı kullanım senaryolar…

The Double-Edged Sword: Negative Impact of AI in Software Development and How to Use AI Effectively in the SDE Process

The Double-Edged Sword: Initial Experience and Hidden Pitfalls
As a software engineer, I initially embraced AI-powered editors like Cursor for backend development with great enthusiasm. The ability to automatically generate CRUD operations and complex API logic was intoxicating. However, this convenience came with a hidden cost: a gradual decline in diligence. Over-reliance on AI led me to assume the business logic was inherently correct. This complacency resulted in significant integration issues, such as inconsistent response structures and performance-degrading N+1 queries that only surfaced during high-volume production testing.

Shifting Gears: Mastering AI for Productive Development
To reclaim control, I transitioned from passive code generation to active AI management. I learned to define strict rules within the editor to enforce consistent coding patterns and robust architecture. I also discovered that AI performance degrades with large, monolithic tasks due to token limits, often leading to missing data pointers in DTOs. The solution was to decompose tasks into smaller, manageable pieces and implement a rigorous review process for every change. Using “plan mode” for brainstorming and impact analysis allowed me to vet AI approaches before execution, ensuring smoother deployments and optimized query performance.

The Game Changer: AI-Driven Test Automation and Asynchronous Bug Fixing
Perhaps the most significant productivity boost came from using AI to tackle testing—a task often neglected due to tight deadlines. AI now helps me set up comprehensive test suites, including unit, integration, and E2E tests with real databases. For a single API, I can generate 8 to 10 test cases covering edge cases, invalid inputs, and duplicates in minutes. Furthermore, tools like Jules AI have revolutionized my workflow by allowing asynchronous development. I once even managed to brainstorm a bug fix and merge a PR via my phone during a doctor’s appointment, with the AI handling the heavy lifting and triggering the deployment pipeline while I was away from my laptop.

Conclusion: The Path to AI-Assisted Software Engineering Excellence
AI in software development is a powerful tool that requires a careful, observant hand. When used with skepticism and structured oversight—through task decomposition, strict rules, and automated testing—it provides a massive positive impact. The key to excellence is not just letting AI write the code, but carefully observing and guiding what it produces.