Can You Trust a View
from a Distance?

Jon Reades & Ollie Ballinger - j.reades@ucl.ac.uk

23rd October 2026

Last Week, You Said…

Isn’t. It decides which questions are easy to ask. Choosing what to keep means choosing what to leave out. Categories and keys carry assumptions. The organisation is the information.

It isn’t a neutral choice because I don’t always know where, how or why data was collected […]

How I store data is a neutral choice, because storage itself is just a technical tool.

Why these three?

  • “What to leave out”: a function or a package also decides what you see and what gets wrapped away.
  • “Where, how or why”: that’s what you need to know before you trust someone else’s data, or their code.
  • “Just a technical tool”: true in a narrow sense, if the only question is whether data can be written and read back. But who can read it back depends on the format.

Today: storing data was a choice. Is reusing other people’s code, and other people’s views, one too?

This Week’s Question

Can you trust a view from a distance?

 

We’ll answer it with code and readings now, and Ollie will answer it with satellites after the break.

“Quantification is a technology of distance.” ~ Theodore Porter, quoted in D’Ignazio and Klein (2020, 76)

Predict the Output

Pairs. No laptops. Vote with your fingers.

1. Why Haven’t These Changed?

data    = [1,25,-4,14,7,9]
total   = 1
numbers = []

def calc_mean(numbers):
  total = 0.0
  count = len(numbers)
  for i in numbers:
    total += i
  return total/count

print(calc_mean(data))
print(total)

What does the last line print?

  1. 1
  2. 0.0
  3. 52.0
  4. NameError

Answer: 1. The total inside the function is a different variable. (And numbers is still [].)

2. Wrapping Paper

def splitter(func):
  def wrapper():
    return func().split()
  return wrapper

@splitter
@better
def hello():
  return('hello world')

print(hello())

(better adds title case and !.)

  1. Hello World!
  2. ['Hello', 'World!']
  3. ['hello', 'world']
  4. AttributeError

Answer: 2. better runs first, then splitter. Swap the two lines and you get AttributeError: 'list' object has no attribute 'title'.

3. Gotcha!

pi = 3.1415
print(pi) # 3.1415

from math import pi
print(pi)
  1. 3.1415
  2. 3.141592653589793
  3. NameError
  4. Both values

Answer: 2. Your pi has been replaced, with no warning.

4. Who’s Calling?

def better(func):
  '''Better formatting of a string'''
  def wrapper():
    '''Wraps a function to format it.'''
    return func().title() + "!"
  return wrapper

@better
def hello():
  '''Prints hello world'''
  return('hello world')

print(hello.__name__)
  1. hello
  2. wrapper
  3. better
  4. None

Answer: 2. And hello.__doc__ is the wrapper’s docstring.

Can You Trust a View from a Distance?

Vote

According to the reading you did, a view from a distance…

 

  1. Can be trusted: distance removes the noise. That’s why we write functions and use packages.
  2. Can be trusted only if someone checks on the ground: useful, but it has to be verified from somewhere specific.
  3. Can’t be trusted: distance hides who is looking and why.

Massey (1996)

[…] the boundaries which we draw in space, the ‘places’ we define […], the decisions about which mobilities to allow and which not, and about how open, or how closed, our places are to be … all these things, rather than being based on some eternal principles, are in fact expressions of, and exercises in, social power. ~ Massey (1996, 117)

[…] although these workplaces are globalised (if only very narrowly so) and in that sense ‘open’, they are also specialised and excluding places, closed and defensive, quite tightly sealed against ‘non-conforming’ invasions from the outside world. ~ Massey (1996, 121)

D’Ignazio & Klein (2020)

The view from nowhere–from a distance, from up above, like a god–may be data visualization’s most signature feature. It’s also the most ethically complicated to navigate for the ways in which it masks the people, the methods, the questions, and the messiness that lies behind clean lines and geometric shapes. ~ D’Ignazio and Klein (2020, 76)

[…] all forms of knowledge […] are situated, [Haraway] explains, meaning that they are produced by specific people in specific circumstances—cultural, historical, and geographic. ~ D’Ignazio and Klein (2020, 83)

Is Massey Against Closed Places?

Even as I felt critical of the scientists’ exclusive workplaces I remembered Virginia Woolf’s call for a room of her own. ~ Massey (1996, 123)

A function is a room of its own. Is that a problem?

What’s Been Wrapped Away?

Hello, wrapper

Without @wraps:

print(hello.__name__)
# wrapper
print(hello.__doc__)
# Wraps a function to format it.

With @wraps(func):

print(hello.__name__)
# hello
print(hello.__doc__)
# Prints hello world

The frame replaced the name of whoever did the work. @wraps puts the provenance back.

A Function Can’t Tell You the Data Are Wrong

ds2 = {
  'lat':[51.51,40.71,35.69],
  'lon':[0.13,74.01,139.68],
  'tz': [+0,-5,+8],
  'name':['London','New York','Tokyo']
}

def get_city_info(city:str, field:str, city_lookup:str='name', data:dict=ds2) -> str:
  return str(data[field][ data[city_lookup].index(city) ])

Reading a file (even one on a computer halfway round the world) is one of those things. Making sense of the data in that file for you is probably not. ~ Practical 4

Don’t Never Do a God Trick

Simply stated: it is never a good idea to say “never” in design. ~ D’Ignazio and Klein (2020, 91)

[…] there are also good reasons to use the god trick as a form of recuperation, contestation, or empowerment. ~ D’Ignazio and Klein (2020, 92)

Listen for: where does Ollie’s work come down to the ground?

Group Sign-Up

The sign-up form is open from Monday 26 October to Monday 2 November.

  • Sign up as a group (4 best, no more than 5), or on your own.
  • Anyone not in a group by Monday 2 November will be matched to a group with space.
  • Why groups, and how they work: Group Working (week 3).

Intro to the practical

Here’s what we’re covering:

  • Recycling other people’s code: reading a remote file with urllib and turning it into data with csv.
  • We’re also going to stretch your understanding of how these lists and dicts as data structures interrelate and, crucially, make use of the DOL, which is analogous to how pandas – probably the single biggest reason Python dominates data science – manages and represents data to you.

Over to Ollie

Before You Go…

Complete the sentence:

 

A view from a distance can / can’t be trusted when…, because…

 

A selection will open next week’s session.

Input

Provide your input here: form.menti.com/s/altu662n9tu3

Mentimeter QR Code

Mentimeter QR Code

Thank You

References

D’Ignazio, Catherine, and Lauren F. Klein. 2020. “Data Feminism.” In. MIT Press. https://data-feminism.mitpress.mit.edu/.
Massey, Doreen. 1996. “Politicising Space and Place.” Scottish Geographical Magazine 112 (2). Routledge:117–23. https://doi.org/10.1080/14702549608554458.