Urgent.News

What's breaking now, across thousands of outlets.

Tech

Your data model is where uncertainty goes to die

The sensor knew how much to trust itself. Our database column did not have room for that, so we threw it away on the way in. Everything arrives with an error bar Android hands you a Location object that is far richer than a point on a map. It has an accuracy radius in metres, the provider that produced it, a bearing, an altitude, a timestamp, sometimes a speed. The platform is telling you, on…

Sensor systems understand how much to trust their own data. The database column initially lacked space to store this information, so it was discarded. Every data entry provides an error bar, with details like accuracy radius in meters, the data source, a bearing, altitude, timestamp, and sometimes speed. This is not unique to GPS data; models return confidences, caches indicate staleness, and upstream APIs disclose whether they delivered fresh data or a fallback.

Almost every value in a real system arrives with a companion signal about its own reliability. However, many schemas discard this crucial information. The initial schema was straightforward, containing latitude, longitude, speed, and date. However, it silently dropped the accuracy radius on every write, making this discard permanent.

In the months following, questions arose: Was the journey accurately tracked, or was the phone in a basement during the entire period? Which readings combined location and raw GPS data? Was the device moving or merely drifting? Was the distance discrepancy due to device motion or drifting? None of these are algorithmic issues; they are schema problems.

The data existed at the time of entry, in memory, and was free to use, yet no column was allocated for it. Once this row is written without the necessary information, all future readers lose access to that uncertainty forever. The current schema now includes: data class LocationData, which includes not only the reading (latitude, longitude, speed, bearing, altitude, location time) but also how much to trust the data and its source, device behavior (gyroscope, accelerometer, battery percentage, device model, app version), and the system's conclusions (mock location, abnormalities, pausing, displacement).

By storing our own verdict alongside the evidence, a later reader can see both the conclusions made and the sources of those conclusions. When a threshold proves incorrect, every affected row is identifiable, rather than remaining theoretical. Confidence is presented as a numerical score rather than a vague feeling. Raw columns allow the truth to be reconstructed, but they do not directly translate into usable UI elements.

Therefore, the system collapses into a single score, ranging from 0 to 100, which takes into account various conditions (such as permission missing, mock location, process killed, restarted, GPS being off, battery optimization, power saver mode) and an accuracy tier (free for accuracy within 15 meters, costing 20 points for worse than 75 meters) and a small bonus when the fix stream is stable.

This design encourages users to acknowledge the conditions under which data was collected, rather than presenting a number with false confidence. The principle is to design the row in such a way that it can carry doubt. If a value can be wrong, the schema should have a place to record how wrong it is, where it came from, and what has already been decided about it.

Adding these columns upfront is cost-effective, as the alternative is discovering at query time that the answer was discarded at write time, months ago, due to a schema that did not consider the importance of confidence.

Written by urgent.news from Dev.to's reporting — not their text. Machine-written — may contain errors; check the original before relying on it.

Read the original at dev.to →

More in Tech

I made Korean government data agent-payable with MCP and x402 — here's what actually happened

TL;DR: I built a remote MCP server that lets any AI agent verify Korean businesses using official National Tax Service data — and charge for it per call in USDC via x402.

  • Remote MCP server enables AI agents to verify Korean businesses using official data
  • Server listed on x402 Bazaar, top for Korean business registration verification
  • Offers three pricing options: free, $0.02 per status check, $0.05 per identity verification

HTTP/HTTPS Malleable C2: The Chameleon of Network Communications

Author: @cyberrscourse | Cybersecurity Education & Research Published: September 16, 2026 ⚠️ LEGAL WARNING: The techniques described in this article are for educational purposes only.

  • Malleable C2 disguises communication as regular web traffic using HTTP/HTTPS.
  • Altered patterns mimic Google Analytics or jQuery CDN requests to blend in.
  • Detection techniques include behavioral analysis, JA3/JA4 fingerprinting, and network flow analysis.

More from Wednesday 16 September →