Nic | Data
  • About
  • Projects
  • Research
  • Life
  • CV
  • Blog
  • Resources
  • Get in Touch
Categories
All (12)
AI Engineering (1)
AI Systems (2)
Analytics Engineering (1)
Cancer Research (1)
Causal Inference (1)
Dashboards (1)
Data Collection (1)
Data Engineering (1)
Data Management (1)
Data Quality (1)
Decision Support (1)
Domain Knowledge (1)
Field Systems (3)
Field Work (1)
Financial Diaries (1)
Georgetown gui2de (1)
Global Health (1)
Health Economics (1)
Health Financing (2)
Health Systems (1)
HFC (1)
Impact Evaluation (1)
KEMRI (1)
Kenya (1)
Low-Resource Settings (1)
Machine Learning (3)
Monitoring & Evaluation (2)
NCDs (1)
ODK (1)
Public Health (5)
Reproducibility (2)
Research (1)
Research Methods (1)
Statistics (2)
Survey Design (2)
Systems Design (1)
Tableau (1)

Writing

Research translation · Field systems · Methods

Essays & Field Notes

A short public set of writing grounded in health systems research and programme data work. Clarity over volume. No career listicles.

Read the Flagship Essay Explore Research →
Flagship Essay

When Clinics Can Diagnose but Cannot Buy Medicines

The public essay built from the BMC Public Health paper, written for readers beyond academic journals.

Research Health Financing NCD Care
Open essay →
12 Curated public notes — research, field systems, and methods
Editor's Picks

Recommended reading

Research

When Clinics Can Diagnose but Cannot Buy Medicines

This essay translates a forthcoming BMC Public Health paper into a sharper public argument about budgets, approvals, and why chronic care fails before treatment starts.

Flagship · 12 min read
Field systems

Health financial diaries

High-frequency household finance data — context for the systems case study.

Methods

From field to model

Why domain knowledge still shapes useful targeting and ML systems.

Delivery

Kisumu cancer dashboard

Research data management through to a county-facing surveillance product.

Browse

Explore by topic

Showing all writing

Archive

Recent essays and tutorials, sorted from newest to oldest.

From Field to Model: Why Domain Knowledge Still Matters in ML
The best models are not built away from reality. They are built with it.
3 min
Machine Learning
Public Health
Domain Knowledge
AI Systems
Mar 17, 2026

Reproducible ML: A Research Data Manager’s View
If a model cannot be rerun, inspected, and trusted, it is not ready for decision-making.
2 min
Machine Learning
Reproducibility
Data Engineering
Research
Mar 17, 2026

Building AI for Low-Resource Settings
Designing for weak connectivity, constrained staffing, and real-world trade-offs
2 min
AI Systems
Global Health
Low-Resource Settings
Systems Design
Mar 17, 2026

Why Statistical Thinking Still Matters in AI Engineering
Good systems need more than models. They need disciplined thinking about uncertainty and evidence.
2 min
AI Engineering
Statistics
Causal Inference
Machine Learning
Mar 17, 2026

Dashboards to Decisions
Why reporting systems should reduce friction, not just display more charts
2 min
Dashboards
Decision Support
Analytics Engineering
Public Health
Mar 17, 2026

When Clinics Can Diagnose but Cannot Buy Medicines
Budget lines, approval chains, and why chronic care can fail long before the prescription is written
5 min
Public Health
Health Financing
Health Systems
NCDs
Kenya
Mar 13, 2026

Survey design mistakes that destroy field data
What I watch for before tools go to enumerators
2 min
Survey Design
Data Quality
Monitoring & Evaluation
Field Systems
Nov 8, 2025

Statistical power for programme evaluators
Stop running underpowered studies by accident
2 min
Statistics
Impact Evaluation
Monitoring & Evaluation
Nov 7, 2025

Building the systems behind a year of health financial diaries
Three hundred households, high-frequency checks, and live field apps on a streaming study database
4 min
Health Economics
Financial Diaries
Health Financing
Field Systems
Georgetown gui2de
Oct 30, 2025

Mobile data collection that survives no-internet field days
ODK, Kobo, REDCap — and the design choices that protect data quality
2 min
Data Collection
ODK
Survey Design
Field Work
HFC
Oct 26, 2025

Reproducible research in public health is an operations problem
What I mean by reproducibility when the data still come from the field
2 min
Public Health
Research Methods
Reproducibility
Field Systems
Oct 26, 2025

Dashboard launch ceremony with county leadership and the research team

Kisumu cancer surveillance: from chart abstraction to a county dashboard
Research data management for multi-year oncology records at JOOTRH / KEMRI
4 min
Cancer Research
Data Management
KEMRI
Tableau
Public Health
Nov 26, 2024
No matching items
Source Code
---
title: ""
subtitle: ""
page-layout: full
listing:
  contents:
    - "../posts/47-facility-decision-space-chronic-care/index.qmd"
    - "../posts/kisumu-cancer-dashboard/index.qmd"
    - "../posts/30-health-financial-diaries-explainer/index.qmd"
    - "../posts/48-from-field-to-model/index.qmd"
    - "../posts/49-reproducible-ml-research-data-manager/index.qmd"
    - "../posts/50-ai-low-resource-settings/index.qmd"
    - "../posts/51-statistical-thinking-ai-engineering/index.qmd"
    - "../posts/52-dashboards-to-decisions/index.qmd"
    - "../posts/24-mobile-data-collection/index.qmd"
    - "../posts/22-reproducible-research-public-health/index.qmd"
    - "../posts/39-survey-design-mistakes/index.qmd"
    - "../posts/38-statistical-power-for-evaluators/index.qmd"
  sort: "date desc"
  type: grid
  grid-columns: 3
  categories: true
  fields: [image, date, title, subtitle, categories, reading-time]
  max-items: 20
  feed: true
---

```{=html}
<div class="redesign-page">

<!-- ═══════════════════════════════════════════
     BLOG HERO
═══════════════════════════════════════════ -->
<section class="bx-hero reveal-on-scroll">
  <div class="bx-hero-inner">
    <div class="bx-hero-copy">
      <span class="section-eyebrow">Writing</span>
      <p class="bx-overline">Research translation · Field systems · Methods</p>
      <h1 class="bx-hero-heading">Essays &amp; Field Notes</h1>
      <p class="bx-hero-lead">A short public set of writing grounded in health systems research and programme data work. Clarity over volume. No career listicles.</p>
      <div class="bx-hero-actions">
        <a href="../posts/47-facility-decision-space-chronic-care/index.html" class="btn-solid">Read the Flagship Essay</a>
        <a href="../research/publications.html" class="btn-ghost">Explore Research →</a>
      </div>
    </div>

    <div class="bx-hero-aside">
      <article class="bx-featured-card">
        <span class="bx-card-kicker">Flagship Essay</span>
        <h3>When Clinics Can Diagnose but Cannot Buy Medicines</h3>
        <p>The public essay built from the BMC Public Health paper, written for readers beyond academic journals.</p>
        <div class="bx-card-tags">
          <span class="bx-tag bx-tag--research">Research</span>
          <span class="bx-tag bx-tag--health">Health Financing</span>
          <span class="bx-tag bx-tag--health">NCD Care</span>
        </div>
        <a href="../posts/47-facility-decision-space-chronic-care/index.html" class="bx-card-link">Open essay →</a>
      </article>

      <div class="bx-metric-card">
        <span class="bx-metric-num">12</span>
        <span class="bx-metric-label">Curated public notes — research, field systems, and methods</span>
      </div>
    </div>
  </div>
</section>

<!-- ═══════════════════════════════════════════
     FEATURED PICKS — Magazine Layout
═══════════════════════════════════════════ -->
<section class="bx-section reveal-on-scroll">
  <div class="bx-section-inner">
    <span class="section-eyebrow">Editor's Picks</span>
    <h2 class="section-h">Recommended reading</h2>

    <div class="bx-picks-grid">
      <a class="bx-pick-card bx-pick--primary" href="../posts/47-facility-decision-space-chronic-care/index.html">
        <div class="bx-pick-content">
          <span class="bx-tag bx-tag--research">Research</span>
          <h3>When Clinics Can Diagnose but Cannot Buy Medicines</h3>
          <p>This essay translates a forthcoming BMC Public Health paper into a sharper public argument about budgets, approvals, and why chronic care fails before treatment starts.</p>
          <span class="bx-pick-meta">Flagship · 12 min read</span>
        </div>
      </a>

      <a class="bx-pick-card bx-pick--secondary" href="../posts/30-health-financial-diaries-explainer/index.html">
        <span class="bx-tag bx-tag--health">Field systems</span>
        <h4>Health financial diaries</h4>
        <p>High-frequency household finance data — context for the systems case study.</p>
      </a>

      <a class="bx-pick-card bx-pick--secondary" href="../posts/48-from-field-to-model/index.html">
        <span class="bx-tag bx-tag--technical">Methods</span>
        <h4>From field to model</h4>
        <p>Why domain knowledge still shapes useful targeting and ML systems.</p>
      </a>

      <a class="bx-pick-card bx-pick--secondary" href="../posts/kisumu-cancer-dashboard/index.html">
        <span class="bx-tag bx-tag--research">Delivery</span>
        <h4>Kisumu cancer dashboard</h4>
        <p>Research data management through to a county-facing surveillance product.</p>
      </a>
    </div>
  </div>
</section>

<!-- ═══════════════════════════════════════════
     CATEGORY EXPLORER STRIP
═══════════════════════════════════════════ -->
<section class="bx-section bx-section--warm reveal-on-scroll">
  <div class="bx-section-inner">
    <span class="section-eyebrow">Browse</span>
    <h2 class="section-h">Explore by topic</h2>

    <div class="bx-categories-grid">
      <button class="bx-category-card active" data-filter="all" type="button">
        <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5"><rect x="3" y="3" width="7" height="7"/><rect x="14" y="3" width="7" height="7"/><rect x="14" y="14" width="7" height="7"/><rect x="3" y="14" width="7" height="7"/></svg>
        <span class="bx-cat-name">All Writing</span>
        <span class="bx-cat-count" id="countAll"></span>
      </button>
      <button class="bx-category-card" data-filter="research" type="button">
        <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5"><circle cx="11" cy="11" r="8"/><line x1="21" y1="21" x2="16.65" y2="16.65"/></svg>
        <span class="bx-cat-name">Research</span>
        <span class="bx-cat-count" id="countResearch"></span>
      </button>
      <button class="bx-category-card" data-filter="technical" type="button">
        <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5"><polyline points="16 18 22 12 16 6"/><polyline points="8 6 2 12 8 18"/></svg>
        <span class="bx-cat-name">Technical</span>
        <span class="bx-cat-count" id="countTechnical"></span>
      </button>
      <button class="bx-category-card" data-filter="career" type="button">
        <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5"><path d="M22 19a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h5l2 3h9a2 2 0 0 1 2 2z"/></svg>
        <span class="bx-cat-name">Career</span>
        <span class="bx-cat-count" id="countCareer"></span>
      </button>
      <button class="bx-category-card" data-filter="field" type="button">
        <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5"><path d="M9 5H7a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2h-2"/><rect x="9" y="3" width="6" height="4" rx="1"/></svg>
        <span class="bx-cat-name">Field Systems</span>
        <span class="bx-cat-count" id="countField"></span>
      </button>
    </div>

    <div class="bx-filter-status">
      <p id="bxFilterLabel">Showing <strong>all writing</strong></p>
      <p id="bxFilterCount"></p>
    </div>
  </div>
</section>

</div>

<script>
(function() {
  // Scroll reveal
  var prefersReduced = window.matchMedia('(prefers-reduced-motion: reduce)').matches;
  var revealEls = document.querySelectorAll('.reveal-on-scroll');
  if (!prefersReduced) {
    var observer = new IntersectionObserver(function(entries) {
      entries.forEach(function(entry) {
        if (entry.isIntersecting) {
          entry.target.classList.add('is-visible');
          observer.unobserve(entry.target);
        }
      });
    }, { threshold: 0.06, rootMargin: '0px 0px -40px 0px' });
    revealEls.forEach(function(el) { observer.observe(el); });
  } else {
    revealEls.forEach(function(el) { el.classList.add('is-visible'); });
  }

  // Blog category filtering
  var filterButtons = Array.from(document.querySelectorAll('.bx-category-card'));
  var filterLabel = document.getElementById('bxFilterLabel');
  var filterCount = document.getElementById('bxFilterCount');

  var streamNames = {
    all: 'all writing',
    research: 'research writing',
    technical: 'technical writing',
    career: 'career writing',
    field: 'field systems writing'
  };

  var rules = [
    { key: 'career', words: ['career', 'portfolio', 'job search', 'interview', 'salary', 'remote work', 'linkedin', 'personal brand', 'first job', 'roadmap', 'first 90 days', 'hired', 'negotiate'] },
    { key: 'field', words: ['monitoring & evaluation', 'impact evaluation', 'survey design', 'data collection', 'field work', 'm&e', 'logframe', 'odk', 'mobile technology', 'data quality', 'health programs', 'evaluator'] },
    { key: 'research', words: ['public health', 'health financing', 'health systems', 'health research', 'research methods', 'cancer research', 'health economics', 'ncd', 'reproducibility', 'reproducible', 'maternal', 'epidemiology'] },
    { key: 'technical', words: ['r', 'python', 'sql', 'quarto', 'dashboards', 'dashboard', 'tableau', 'power bi', 'data engineering', 'data visualization', 'git', 'github', 'database', 'tools', 'automation', 'statistics', 'a/b testing', 'data cleaning'] }
  ];

  function detectStream(card) {
    var text = [
      ...(Array.from(card.querySelectorAll('.listing-category')).map(function(n) { return n.textContent || ''; })),
      (card.querySelector('.listing-title') ? card.querySelector('.listing-title').textContent : ''),
      (card.querySelector('.listing-subtitle') ? card.querySelector('.listing-subtitle').textContent : '')
    ].join(' ').toLowerCase();

    for (var i = 0; i < rules.length; i++) {
      for (var j = 0; j < rules[i].words.length; j++) {
        if (text.indexOf(rules[i].words[j]) !== -1) {
          return rules[i].key;
        }
      }
    }
    return 'technical';
  }

  function decorateCards() {
    var cards = Array.from(document.querySelectorAll('#listing-listing .quarto-post'));
    var counts = { all: cards.length, research: 0, technical: 0, career: 0, field: 0 };

    cards.forEach(function(card) {
      var stream = detectStream(card);
      card.dataset.stream = stream;
      counts[stream] = (counts[stream] || 0) + 1;

      // Add stream badge
      var body = card.querySelector('.body');
      if (body && !body.querySelector('.bx-stream-badge')) {
        var badge = document.createElement('span');
        badge.className = 'bx-stream-badge bx-stream-badge--' + stream;
        badge.textContent = streamNames[stream];
        body.prepend(badge);
      }
    });

    // Update counts
    var countAllEl = document.getElementById('countAll');
    var countResEl = document.getElementById('countResearch');
    var countTechEl = document.getElementById('countTechnical');
    var countCarEl = document.getElementById('countCareer');
    var countFieldEl = document.getElementById('countField');
    if (countAllEl) countAllEl.textContent = counts.all + ' posts';
    if (countResEl) countResEl.textContent = counts.research + ' posts';
    if (countTechEl) countTechEl.textContent = counts.technical + ' posts';
    if (countCarEl) countCarEl.textContent = counts.career + ' posts';
    if (countFieldEl) countFieldEl.textContent = counts.field + ' posts';

    return cards;
  }

  function applyFilter(stream) {
    var cards = Array.from(document.querySelectorAll('#listing-listing .quarto-post'));
    var visible = 0;

    cards.forEach(function(card) {
      var show = stream === 'all' || card.dataset.stream === stream;
      card.classList.toggle('blog-post-hidden', !show);
      if (show) visible++;
    });

    filterButtons.forEach(function(btn) {
      btn.classList.toggle('active', btn.dataset.filter === stream);
    });

    if (filterLabel) {
      filterLabel.innerHTML = 'Showing <strong>' + (streamNames[stream] || stream) + '</strong>';
    }
    if (filterCount) {
      filterCount.textContent = visible + ' of ' + cards.length + ' posts';
    }
  }

  function init() {
    var cards = decorateCards();
    if (!cards.length) return;

    filterButtons.forEach(function(btn) {
      btn.addEventListener('click', function() {
        applyFilter(btn.dataset.filter || 'all');
      });
    });

    applyFilter('all');
  }

  if (document.readyState === 'loading') {
    document.addEventListener('DOMContentLoaded', init, { once: true });
  } else {
    init();
  }
})();
</script>
```

## Archive

Recent essays and tutorials, sorted from newest to oldest.

Nichodemus AmolloResearch Data Systems · Health & Development Programmes

+254 725 737 867Nairobi, Kenya · Open to remote and hybrid work

  • CV