SlideShare a Scribd company logo
1 of 13
Developing for Africa
With JonathanHaddock
Developing for Africa - the
challenges of building apps
for the African environment
Jonathan Haddock
Code Harbour - 2nd October 2019
https://blog.jonsdocs.org.uk
@joncojonathan
The problem
● APF is a Christian charity focussed on transforming
lives in Africa
● Training material was circulated on paper
○ Farming
○ Health
○ Christian studies
○ Financial suggestions
The problem
● Paper is expensive to print and ship
● Updates don’t happen - once printed there’s no
change
● Economies of scale meant many copies of documents
○ Sometimes in very obscure languages
● Intra-Africa distribution difficult
eVitabu - the solution
● An Android app
○ Android v5+, with v4 possible
● Easy to use interface
● Searchable
○ Lead to scale challenges
● Resources available offline
● Requires registration &
vetting
eVitabu - overview
Hurdles - connectivity: speed, cost & reliability
● Transfer rates can be sloooow
● Data is paid for by the MB
○ Same over here, but we have more disposable funds
● Connections may not be stable, leads to repeated
download attempts and increased costs
● Necessary to make downloaded data as small as
possible
○ A valid goal in any application, but more prominent here
Hurdles - allowing for scale
● Early versions of the app sent lots of requests
● Initially no caching
● Learning point: load test systems with realistic data
sets
○ Test systems of only 20 records aren’t the same!
● Initially no compression
○ We’re used to browsers automatically enabling Gzip
compression - your own app doesn’t
● Searching process was inefficient
Hurdles - contextualisation
● I and my co-developers are mzungu - white people
● Developing from a Western context
○ Exposure to other apps and GUIs
● Difference in language
○ English is the common language, but simplified
● Icons & symbols may have different meanings
Hurdles - supporting users
● It’s a long distance relationship!
● Email and WhatsApp used a lot
● Local partners assist at set up conferences
○ Sometimes they take short cuts
● Changes to the back end (e.g. the XML schema) must
be considered
○ Older versions of the app could be used for many years
○ Backward compatibility
Any questions?
Links and acknowledgements
● African Pastors Fellowship
https://africanpastors.org
● My blog
https://blog.jonsdocs.org.uk
I’d like to thank Mike, my original co-developer on this project.
Adam, my long time coding partner, has also contributed hours to
the project.
I’d also like to thank APF’s trustees for backing eVitabu, along with
our users for helping it grow.
Links and acknowledgements
https://commons.wikimedia.org/wiki/File:Tablet_font_awesome.svg
https://www.needpix.com/photo/100665/computer-server-workstation-pc-hardware-linux-tux

More Related Content

Similar to Developing for Africa by Jonathan Haddock (codeHarbour October 2019)

Beginner's Guide to Frontend Development: Comparing Angular, React, Ember, an...
Beginner's Guide to Frontend Development: Comparing Angular, React, Ember, an...Beginner's Guide to Frontend Development: Comparing Angular, React, Ember, an...
Beginner's Guide to Frontend Development: Comparing Angular, React, Ember, an...Prasid Pathak
 
Nonprofit technology common problems and some possible solutions
Nonprofit technology common problems and some possible solutionsNonprofit technology common problems and some possible solutions
Nonprofit technology common problems and some possible solutions501 Commons
 
Ubermix 1:1 open program
Ubermix 1:1 open program Ubermix 1:1 open program
Ubermix 1:1 open program Chris Scott
 
Open Source Tools for Libraries
Open Source Tools for LibrariesOpen Source Tools for Libraries
Open Source Tools for LibrariesNicole C. Engard
 
2016 EDRLab roadmap at epubsummit
2016 EDRLab roadmap at epubsummit2016 EDRLab roadmap at epubsummit
2016 EDRLab roadmap at epubsummitLaurent Le Meur
 
Open source slideshow
Open source slideshowOpen source slideshow
Open source slideshowmstuckless
 
Super lazy side projects - Hamik Mukelyan
Super lazy side projects - Hamik MukelyanSuper lazy side projects - Hamik Mukelyan
Super lazy side projects - Hamik MukelyanDrew Malone
 
The challenge of growing the LibreOffice Japanese community through events ...
The challenge of growing  the LibreOffice Japanese community  through events ...The challenge of growing  the LibreOffice Japanese community  through events ...
The challenge of growing the LibreOffice Japanese community through events ...Shinji Enoki
 
Expanding Internationally Through Partnerships: Practical Lessons For 21st Ce...
Expanding Internationally Through Partnerships: Practical Lessons For 21st Ce...Expanding Internationally Through Partnerships: Practical Lessons For 21st Ce...
Expanding Internationally Through Partnerships: Practical Lessons For 21st Ce...Rmasisak
 
Documentación Audiovisual production Parte Introduction (Junior University Ca...
Documentación Audiovisual production Parte Introduction (Junior University Ca...Documentación Audiovisual production Parte Introduction (Junior University Ca...
Documentación Audiovisual production Parte Introduction (Junior University Ca...Rsearcher - Professor - Producer
 
The Frontend Developer Landscape Explained and the Rise of Advanced Frontend ...
The Frontend Developer Landscape Explained and the Rise of Advanced Frontend ...The Frontend Developer Landscape Explained and the Rise of Advanced Frontend ...
The Frontend Developer Landscape Explained and the Rise of Advanced Frontend ...Prasid Pathak
 
Webinar: Measuring Program Outcomes: A Toolkit for Small Libraries-2016-05-04
Webinar: Measuring Program Outcomes: A Toolkit for Small Libraries-2016-05-04Webinar: Measuring Program Outcomes: A Toolkit for Small Libraries-2016-05-04
Webinar: Measuring Program Outcomes: A Toolkit for Small Libraries-2016-05-04TechSoup
 
Google summer of code with drupal
Google summer of code with drupalGoogle summer of code with drupal
Google summer of code with drupalNaveen Valecha
 
Online learning platforms
Online learning platformsOnline learning platforms
Online learning platformsSergio Cigoli
 
SFSU ISYS 363 - Fall 2013 Section #1 - Buccaneers
SFSU ISYS 363 - Fall 2013 Section #1 - BuccaneersSFSU ISYS 363 - Fall 2013 Section #1 - Buccaneers
SFSU ISYS 363 - Fall 2013 Section #1 - Buccaneerseileentongur
 
Open SUNY Textbooks: Open Textbooks and Textbook Publishing Services
Open SUNY Textbooks: Open Textbooks and Textbook Publishing ServicesOpen SUNY Textbooks: Open Textbooks and Textbook Publishing Services
Open SUNY Textbooks: Open Textbooks and Textbook Publishing ServicesBCcampus
 
By the power of Plone - Case Carousel at University of Jyväskylä
By the power of Plone - Case Carousel at University of JyväskyläBy the power of Plone - Case Carousel at University of Jyväskylä
By the power of Plone - Case Carousel at University of JyväskyläRikupekka Oksanen
 

Similar to Developing for Africa by Jonathan Haddock (codeHarbour October 2019) (20)

Beginner's Guide to Frontend Development: Comparing Angular, React, Ember, an...
Beginner's Guide to Frontend Development: Comparing Angular, React, Ember, an...Beginner's Guide to Frontend Development: Comparing Angular, React, Ember, an...
Beginner's Guide to Frontend Development: Comparing Angular, React, Ember, an...
 
Nonprofit technology common problems and some possible solutions
Nonprofit technology common problems and some possible solutionsNonprofit technology common problems and some possible solutions
Nonprofit technology common problems and some possible solutions
 
Ubermix 1:1 open program
Ubermix 1:1 open program Ubermix 1:1 open program
Ubermix 1:1 open program
 
Open Source Tools for Libraries
Open Source Tools for LibrariesOpen Source Tools for Libraries
Open Source Tools for Libraries
 
2016 EDRLab roadmap at epubsummit
2016 EDRLab roadmap at epubsummit2016 EDRLab roadmap at epubsummit
2016 EDRLab roadmap at epubsummit
 
Open source slideshow
Open source slideshowOpen source slideshow
Open source slideshow
 
Super lazy side projects - Hamik Mukelyan
Super lazy side projects - Hamik MukelyanSuper lazy side projects - Hamik Mukelyan
Super lazy side projects - Hamik Mukelyan
 
The challenge of growing the LibreOffice Japanese community through events ...
The challenge of growing  the LibreOffice Japanese community  through events ...The challenge of growing  the LibreOffice Japanese community  through events ...
The challenge of growing the LibreOffice Japanese community through events ...
 
Expanding Internationally Through Partnerships: Practical Lessons For 21st Ce...
Expanding Internationally Through Partnerships: Practical Lessons For 21st Ce...Expanding Internationally Through Partnerships: Practical Lessons For 21st Ce...
Expanding Internationally Through Partnerships: Practical Lessons For 21st Ce...
 
Documentación Audiovisual production Parte Introduction (Junior University Ca...
Documentación Audiovisual production Parte Introduction (Junior University Ca...Documentación Audiovisual production Parte Introduction (Junior University Ca...
Documentación Audiovisual production Parte Introduction (Junior University Ca...
 
The Frontend Developer Landscape Explained and the Rise of Advanced Frontend ...
The Frontend Developer Landscape Explained and the Rise of Advanced Frontend ...The Frontend Developer Landscape Explained and the Rise of Advanced Frontend ...
The Frontend Developer Landscape Explained and the Rise of Advanced Frontend ...
 
Webinar: Measuring Program Outcomes: A Toolkit for Small Libraries-2016-05-04
Webinar: Measuring Program Outcomes: A Toolkit for Small Libraries-2016-05-04Webinar: Measuring Program Outcomes: A Toolkit for Small Libraries-2016-05-04
Webinar: Measuring Program Outcomes: A Toolkit for Small Libraries-2016-05-04
 
Digitization for Small Institutions
Digitization for Small InstitutionsDigitization for Small Institutions
Digitization for Small Institutions
 
Senior Project
Senior ProjectSenior Project
Senior Project
 
Google summer of code with drupal
Google summer of code with drupalGoogle summer of code with drupal
Google summer of code with drupal
 
Maimoona g so-c - 2021
Maimoona   g so-c - 2021Maimoona   g so-c - 2021
Maimoona g so-c - 2021
 
Online learning platforms
Online learning platformsOnline learning platforms
Online learning platforms
 
SFSU ISYS 363 - Fall 2013 Section #1 - Buccaneers
SFSU ISYS 363 - Fall 2013 Section #1 - BuccaneersSFSU ISYS 363 - Fall 2013 Section #1 - Buccaneers
SFSU ISYS 363 - Fall 2013 Section #1 - Buccaneers
 
Open SUNY Textbooks: Open Textbooks and Textbook Publishing Services
Open SUNY Textbooks: Open Textbooks and Textbook Publishing ServicesOpen SUNY Textbooks: Open Textbooks and Textbook Publishing Services
Open SUNY Textbooks: Open Textbooks and Textbook Publishing Services
 
By the power of Plone - Case Carousel at University of Jyväskylä
By the power of Plone - Case Carousel at University of JyväskyläBy the power of Plone - Case Carousel at University of Jyväskylä
By the power of Plone - Case Carousel at University of Jyväskylä
 

More from Alex Cachia

No Onions, No Tiers - An Introduction to Vertical Slice Architecture by Bill ...
No Onions, No Tiers - An Introduction to Vertical Slice Architecture by Bill ...No Onions, No Tiers - An Introduction to Vertical Slice Architecture by Bill ...
No Onions, No Tiers - An Introduction to Vertical Slice Architecture by Bill ...Alex Cachia
 
Supporting IT by David Meares
Supporting IT by David MearesSupporting IT by David Meares
Supporting IT by David MearesAlex Cachia
 
OWASP Top 10 2021 - let's take a closer look by Glenn Wilson
OWASP Top 10 2021 - let's take a closer look by Glenn WilsonOWASP Top 10 2021 - let's take a closer look by Glenn Wilson
OWASP Top 10 2021 - let's take a closer look by Glenn WilsonAlex Cachia
 
If you think open source is not for you, think again by Jane Chakravorty
If you think open source is not for you, think again by Jane ChakravortyIf you think open source is not for you, think again by Jane Chakravorty
If you think open source is not for you, think again by Jane ChakravortyAlex Cachia
 
Chaos Engineering – why we should all practice breaking things on purpose by ...
Chaos Engineering – why we should all practice breaking things on purpose by ...Chaos Engineering – why we should all practice breaking things on purpose by ...
Chaos Engineering – why we should all practice breaking things on purpose by ...Alex Cachia
 
A brief overview of the history and practice of user experience by Ian Westbrook
A brief overview of the history and practice of user experience by Ian WestbrookA brief overview of the history and practice of user experience by Ian Westbrook
A brief overview of the history and practice of user experience by Ian WestbrookAlex Cachia
 
Return the carriage, feed the line by Aaron Taylor
Return the carriage, feed the line by Aaron TaylorReturn the carriage, feed the line by Aaron Taylor
Return the carriage, feed the line by Aaron TaylorAlex Cachia
 
Treating your career path and training like leveling up in games by Raymond C...
Treating your career path and training like leveling up in games by Raymond C...Treating your career path and training like leveling up in games by Raymond C...
Treating your career path and training like leveling up in games by Raymond C...Alex Cachia
 
Digital forensics and giving evidence by Jonathan Haddock
Digital forensics and giving evidence by Jonathan Haddock Digital forensics and giving evidence by Jonathan Haddock
Digital forensics and giving evidence by Jonathan Haddock Alex Cachia
 
Software Security by Glenn Wilson
Software Security by Glenn WilsonSoftware Security by Glenn Wilson
Software Security by Glenn WilsonAlex Cachia
 
Data Preparation and the Importance of How Machines Learn by Rebecca Vickery
Data Preparation and the Importance of How Machines Learn by Rebecca VickeryData Preparation and the Importance of How Machines Learn by Rebecca Vickery
Data Preparation and the Importance of How Machines Learn by Rebecca VickeryAlex Cachia
 
Why Rust? by Edd Barrett (codeHarbour December 2019)
Why Rust? by Edd Barrett (codeHarbour December 2019)Why Rust? by Edd Barrett (codeHarbour December 2019)
Why Rust? by Edd Barrett (codeHarbour December 2019)Alex Cachia
 
Issue with tracking? Fail that build! by Steve Coppin-Smith (codeHarbour Nove...
Issue with tracking? Fail that build! by Steve Coppin-Smith (codeHarbour Nove...Issue with tracking? Fail that build! by Steve Coppin-Smith (codeHarbour Nove...
Issue with tracking? Fail that build! by Steve Coppin-Smith (codeHarbour Nove...Alex Cachia
 
Hack your voicemail with Javascript by Chris Willmott (codeHarbour October 2019)
Hack your voicemail with Javascript by Chris Willmott (codeHarbour October 2019)Hack your voicemail with Javascript by Chris Willmott (codeHarbour October 2019)
Hack your voicemail with Javascript by Chris Willmott (codeHarbour October 2019)Alex Cachia
 
Revving up with Reinforcement Learning by Ricardo Sueiras
Revving up with Reinforcement Learning by Ricardo SueirasRevving up with Reinforcement Learning by Ricardo Sueiras
Revving up with Reinforcement Learning by Ricardo SueirasAlex Cachia
 
Blockchain For Your Business by Kenneth Cox (codeHarbour July 2019)
Blockchain For Your Business by Kenneth Cox (codeHarbour July 2019)Blockchain For Your Business by Kenneth Cox (codeHarbour July 2019)
Blockchain For Your Business by Kenneth Cox (codeHarbour July 2019)Alex Cachia
 
Seeking Simplicity by Phil Nash (codeHarbour June 2019)
Seeking Simplicity by Phil Nash (codeHarbour June 2019)Seeking Simplicity by Phil Nash (codeHarbour June 2019)
Seeking Simplicity by Phil Nash (codeHarbour June 2019)Alex Cachia
 
Sharing Data is Caring Data by Mark Terry (codeHarbour June 2019)
Sharing Data is Caring Data by Mark Terry (codeHarbour June 2019)Sharing Data is Caring Data by Mark Terry (codeHarbour June 2019)
Sharing Data is Caring Data by Mark Terry (codeHarbour June 2019)Alex Cachia
 
Managing technical debt by Chris Willmott (codeHarbour April 2019)
Managing technical debt by Chris Willmott (codeHarbour April 2019)Managing technical debt by Chris Willmott (codeHarbour April 2019)
Managing technical debt by Chris Willmott (codeHarbour April 2019)Alex Cachia
 
Telephone Systems and Voice over IP by Bob Eager (codeHarbour April 2019)
Telephone Systems and Voice over IP by Bob Eager (codeHarbour April 2019)Telephone Systems and Voice over IP by Bob Eager (codeHarbour April 2019)
Telephone Systems and Voice over IP by Bob Eager (codeHarbour April 2019)Alex Cachia
 

More from Alex Cachia (20)

No Onions, No Tiers - An Introduction to Vertical Slice Architecture by Bill ...
No Onions, No Tiers - An Introduction to Vertical Slice Architecture by Bill ...No Onions, No Tiers - An Introduction to Vertical Slice Architecture by Bill ...
No Onions, No Tiers - An Introduction to Vertical Slice Architecture by Bill ...
 
Supporting IT by David Meares
Supporting IT by David MearesSupporting IT by David Meares
Supporting IT by David Meares
 
OWASP Top 10 2021 - let's take a closer look by Glenn Wilson
OWASP Top 10 2021 - let's take a closer look by Glenn WilsonOWASP Top 10 2021 - let's take a closer look by Glenn Wilson
OWASP Top 10 2021 - let's take a closer look by Glenn Wilson
 
If you think open source is not for you, think again by Jane Chakravorty
If you think open source is not for you, think again by Jane ChakravortyIf you think open source is not for you, think again by Jane Chakravorty
If you think open source is not for you, think again by Jane Chakravorty
 
Chaos Engineering – why we should all practice breaking things on purpose by ...
Chaos Engineering – why we should all practice breaking things on purpose by ...Chaos Engineering – why we should all practice breaking things on purpose by ...
Chaos Engineering – why we should all practice breaking things on purpose by ...
 
A brief overview of the history and practice of user experience by Ian Westbrook
A brief overview of the history and practice of user experience by Ian WestbrookA brief overview of the history and practice of user experience by Ian Westbrook
A brief overview of the history and practice of user experience by Ian Westbrook
 
Return the carriage, feed the line by Aaron Taylor
Return the carriage, feed the line by Aaron TaylorReturn the carriage, feed the line by Aaron Taylor
Return the carriage, feed the line by Aaron Taylor
 
Treating your career path and training like leveling up in games by Raymond C...
Treating your career path and training like leveling up in games by Raymond C...Treating your career path and training like leveling up in games by Raymond C...
Treating your career path and training like leveling up in games by Raymond C...
 
Digital forensics and giving evidence by Jonathan Haddock
Digital forensics and giving evidence by Jonathan Haddock Digital forensics and giving evidence by Jonathan Haddock
Digital forensics and giving evidence by Jonathan Haddock
 
Software Security by Glenn Wilson
Software Security by Glenn WilsonSoftware Security by Glenn Wilson
Software Security by Glenn Wilson
 
Data Preparation and the Importance of How Machines Learn by Rebecca Vickery
Data Preparation and the Importance of How Machines Learn by Rebecca VickeryData Preparation and the Importance of How Machines Learn by Rebecca Vickery
Data Preparation and the Importance of How Machines Learn by Rebecca Vickery
 
Why Rust? by Edd Barrett (codeHarbour December 2019)
Why Rust? by Edd Barrett (codeHarbour December 2019)Why Rust? by Edd Barrett (codeHarbour December 2019)
Why Rust? by Edd Barrett (codeHarbour December 2019)
 
Issue with tracking? Fail that build! by Steve Coppin-Smith (codeHarbour Nove...
Issue with tracking? Fail that build! by Steve Coppin-Smith (codeHarbour Nove...Issue with tracking? Fail that build! by Steve Coppin-Smith (codeHarbour Nove...
Issue with tracking? Fail that build! by Steve Coppin-Smith (codeHarbour Nove...
 
Hack your voicemail with Javascript by Chris Willmott (codeHarbour October 2019)
Hack your voicemail with Javascript by Chris Willmott (codeHarbour October 2019)Hack your voicemail with Javascript by Chris Willmott (codeHarbour October 2019)
Hack your voicemail with Javascript by Chris Willmott (codeHarbour October 2019)
 
Revving up with Reinforcement Learning by Ricardo Sueiras
Revving up with Reinforcement Learning by Ricardo SueirasRevving up with Reinforcement Learning by Ricardo Sueiras
Revving up with Reinforcement Learning by Ricardo Sueiras
 
Blockchain For Your Business by Kenneth Cox (codeHarbour July 2019)
Blockchain For Your Business by Kenneth Cox (codeHarbour July 2019)Blockchain For Your Business by Kenneth Cox (codeHarbour July 2019)
Blockchain For Your Business by Kenneth Cox (codeHarbour July 2019)
 
Seeking Simplicity by Phil Nash (codeHarbour June 2019)
Seeking Simplicity by Phil Nash (codeHarbour June 2019)Seeking Simplicity by Phil Nash (codeHarbour June 2019)
Seeking Simplicity by Phil Nash (codeHarbour June 2019)
 
Sharing Data is Caring Data by Mark Terry (codeHarbour June 2019)
Sharing Data is Caring Data by Mark Terry (codeHarbour June 2019)Sharing Data is Caring Data by Mark Terry (codeHarbour June 2019)
Sharing Data is Caring Data by Mark Terry (codeHarbour June 2019)
 
Managing technical debt by Chris Willmott (codeHarbour April 2019)
Managing technical debt by Chris Willmott (codeHarbour April 2019)Managing technical debt by Chris Willmott (codeHarbour April 2019)
Managing technical debt by Chris Willmott (codeHarbour April 2019)
 
Telephone Systems and Voice over IP by Bob Eager (codeHarbour April 2019)
Telephone Systems and Voice over IP by Bob Eager (codeHarbour April 2019)Telephone Systems and Voice over IP by Bob Eager (codeHarbour April 2019)
Telephone Systems and Voice over IP by Bob Eager (codeHarbour April 2019)
 

Recently uploaded

Key Features Of Token Development (1).pptx
Key  Features Of Token  Development (1).pptxKey  Features Of Token  Development (1).pptx
Key Features Of Token Development (1).pptxLBM Solutions
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Alan Dix
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersThousandEyes
 
Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions
 
Artificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning eraArtificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning eraDeakin University
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machinePadma Pradeep
 
Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksSoftradix Technologies
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsMemoori
 

Recently uploaded (20)

Key Features Of Token Development (1).pptx
Key  Features Of Token  Development (1).pptxKey  Features Of Token  Development (1).pptx
Key Features Of Token Development (1).pptx
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
 
Pigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping ElbowsPigging Solutions Piggable Sweeping Elbows
Pigging Solutions Piggable Sweeping Elbows
 
Artificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning eraArtificial intelligence in the post-deep learning era
Artificial intelligence in the post-deep learning era
 
The transition to renewables in India.pdf
The transition to renewables in India.pdfThe transition to renewables in India.pdf
The transition to renewables in India.pdf
 
Vulnerability_Management_GRC_by Sohang Sengupta.pptx
Vulnerability_Management_GRC_by Sohang Sengupta.pptxVulnerability_Management_GRC_by Sohang Sengupta.pptx
Vulnerability_Management_GRC_by Sohang Sengupta.pptx
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
 
Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other Frameworks
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
 

Developing for Africa by Jonathan Haddock (codeHarbour October 2019)

  • 1. Developing for Africa With JonathanHaddock
  • 2. Developing for Africa - the challenges of building apps for the African environment Jonathan Haddock Code Harbour - 2nd October 2019 https://blog.jonsdocs.org.uk @joncojonathan
  • 3. The problem ● APF is a Christian charity focussed on transforming lives in Africa ● Training material was circulated on paper ○ Farming ○ Health ○ Christian studies ○ Financial suggestions
  • 4. The problem ● Paper is expensive to print and ship ● Updates don’t happen - once printed there’s no change ● Economies of scale meant many copies of documents ○ Sometimes in very obscure languages ● Intra-Africa distribution difficult
  • 5. eVitabu - the solution ● An Android app ○ Android v5+, with v4 possible ● Easy to use interface ● Searchable ○ Lead to scale challenges ● Resources available offline ● Requires registration & vetting
  • 7. Hurdles - connectivity: speed, cost & reliability ● Transfer rates can be sloooow ● Data is paid for by the MB ○ Same over here, but we have more disposable funds ● Connections may not be stable, leads to repeated download attempts and increased costs ● Necessary to make downloaded data as small as possible ○ A valid goal in any application, but more prominent here
  • 8. Hurdles - allowing for scale ● Early versions of the app sent lots of requests ● Initially no caching ● Learning point: load test systems with realistic data sets ○ Test systems of only 20 records aren’t the same! ● Initially no compression ○ We’re used to browsers automatically enabling Gzip compression - your own app doesn’t ● Searching process was inefficient
  • 9. Hurdles - contextualisation ● I and my co-developers are mzungu - white people ● Developing from a Western context ○ Exposure to other apps and GUIs ● Difference in language ○ English is the common language, but simplified ● Icons & symbols may have different meanings
  • 10. Hurdles - supporting users ● It’s a long distance relationship! ● Email and WhatsApp used a lot ● Local partners assist at set up conferences ○ Sometimes they take short cuts ● Changes to the back end (e.g. the XML schema) must be considered ○ Older versions of the app could be used for many years ○ Backward compatibility
  • 12. Links and acknowledgements ● African Pastors Fellowship https://africanpastors.org ● My blog https://blog.jonsdocs.org.uk I’d like to thank Mike, my original co-developer on this project. Adam, my long time coding partner, has also contributed hours to the project. I’d also like to thank APF’s trustees for backing eVitabu, along with our users for helping it grow.

Editor's Notes

  1. I’ve been developing applications since I was about 16, generally focussed on web applications. I tend to develop in PHP but used to dabble in Microsoft Quick BASIC (years ago) and wrote a proof of concept Android app for my MSc some years ago. Since working on the eVitabu project with a local charity I’ve increased the amount of Android / Java development I do. eVitabu is the first tool I’ve written that has more than 10 users.
  2. While the charity has a strong Christian background and ethos, it doesn’t only circulate Christian or Biblical teaching materials although Christianity may run through the materials as a theme. You can read more about African Pastors Fellowship at https://www.africanpastors.org/ .
  3. There are still many printed documents in storage in Africa. Some are likely no longer relevant or would benefit from being updated. Distribution networks inside Africa can be expensive, with smaller work being done by bike or by hiring motorbike based couriers. Having to deliver paper documents to individual partners is costly and time inefficient given the distances involved. The other option is that partners travel to a centralised depot to collect resources - even more time inefficient and many do not have transport or the funds to procure it. APF’s partners are based all over sub-Saharan Africa, with contacts in Uganda, Kenya, Malawi, Rwanda and elsewhere. Getting everyone together does not happen often, and it was a real privilege to be at the launch conference with so many partners, from so many places, in March 2018.
  4. Android version distribution is a challenge. At the launch conference we were providing the hardware, so could concentrate on Android 7 only. Since then we’ve had prospective users contact us about using older devices, so we now support Android 5. The app will run on Android 4 but that would require the security of the central server to be reduced by enabling TLSv1.0 support. We’re looking at Android usage statistics for Africa to determine the best course of action - devices aren’t changed out every couple of years like they are in the West. Users register for access to materials and get vetted by APF staff to ensure they’re from known partners. A lot of the contributors are providing materials at discounted rates (or free) on the agreement resources are only accessed by approved individuals. A lot of time will be spent away from an Internet connection so resources get downloaded to the tablet or phone. During the launch conference (where we provided a free Internet connection) some partners downloaded so many resources they didn’t reconnect to our server for over 3 months. More details about eVitabu are here: https://www.africanpastors.org/evitabu/ .
  5. The first version of the app’s APK was around 3MB but that later grew to 19MB for reasons that I couldn’t determine. This increase was a significant problem, particularly on a slow connection (I simulated this at home on a connection limited to less than 10Mbps - it was painful watching the Play store upgrade the app). Fortunately that’s now solved by use of Android App Bundles ( https://developer.android.com/platform/technology/app-bundle ). Connection reliability can lead to downloads corrupting or not completing at all. One kick off meeting was plagued with this problem, with a number of reports of missing resources - they all existed in the back end.
  6. Originally, each time the user changed activity in the app there was a new connection to the server and a new download of XML. This was fine in early testing, with only a handful of resources, but a real pain after we’d imported over two thousand. Add to that the fact the XML being downloaded was not compressed and we had a runaway problem that would be very costly for partners. Changes were made to cache the XML response on the device for 5 minutes. This is long enough to browse and select resources for download and the list of available resources doesn’t change that regularly - this cache time could be increased. XML data transfers were also compressed with Gzip, massively reducing download times and sizes for the library’s metadata. Searching originally downloaded a new copy of the XML every time a letter was entered into the text box. That was a bad decision and hugely inefficient, something we only noticed after bulk-loading a set of resources. The search now uses the cached data and only begins searching after the third character has been entered. I wrote a blog post, Allowing for scale, which goes into this in greater depth: https://blog.jonsdocs.org.uk/2018/09/12/allowing-for-scale/ .
  7. Wherever possible we’re looking to contextualise the interface so it makes more sense in Africa. Feedback from our users is always valued and we know there’s some areas that need to be adjusted to make the whole experience smoother. English is used in a simplified form: no contractions (“cannot” rather than “can’t”) and sentences are kept short. If an icon isn’t immediately understood it’s important that it doesn’t cause offence.
  8. Support was reasonably easy during the launch conference - I was physically with the users along with a team of others that knew how to use eVitabu. Since that first conference there’s been at least two more lead by the CEO - when I’ve not been there. This brings challenges in supporting both the CEO and the end users at the conference, not always achievable during the working day. Shortcuts sometimes taken by local partners can lead to problems. For example, one group decided they’d share the app via Bluetooth to save having to download the app from the Play store. This caused issues as they were using an old version of the APK, lacking performance and stability enhancements. We planned the XML schema carefully to make sure it contained all the elements we thought eVitabu would need for some time. The concern is that a partner could be using a very old version of the app to connect to our back end infrastructure. While we’d love them to upgrade, and we encourage them to update, the important thing is that partners can download resources. Additionally, we’ve built the app to be tolerant to schema changes - additional fields should be ignored if the app doesn’t know about them.