SlideShare a Scribd company logo
@MicheleTobias @aimandel
QGIS Plugin Development
Is Not Scary
Lessons Learned from Literature Mapper
Michele Tobias, PhD & Alex Mandel, Phd
FOSS4G - Buenos Aires, Argentina - Sept. 27-Oct.2, 2021
@MicheleTobias @aimandel
Who are we?
Michele Tobias
Geospatial Data Specialist
University of California Davis’ DataLab
Mastermind behind Literature Mapper
Coding for text parsing
Really bad a Python
Frequent user of QGIS and R and SQL
Alex Mandel
Geospatial Engineer
Development Seed
Advises on feasibility
Coding for interface functions
Much better at Python
Literature Mapper is NOT a product of UC Davis or Development Seed.
@MicheleTobias @aimandel
What is Literature Mapper?
An experimental Python QGIS Plugin,
available in the plugin repository
Connects Zotero (an open source
citation manager) with QGIS
Allows users to georeference their
citations through QGIS
Store location information inside the
Zotero database to keep the spatial
and non-spatial data together
@MicheleTobias @aimandel
@MicheleTobias @aimandel
Literature Mapper’s Story
Academic journal articles are often about a specific location
Plants & Animals
Geology
Social Justice
History
… ALL of these happen in a location & location matters.
@MicheleTobias @aimandel
Literature Mapper’s Story
We might care about the spatial distribution of studies
BUT
There was no method for connecting location data to a citation manager
We identified a need that had no available solution.
@MicheleTobias @aimandel
The Building Process
1. Idea stage (a paper map
hand annotated in pencil)
2. Prototype
“proof of concept”
3. Code in the
QGIS Plugin repository
4. A tool that is steadily
gaining users
@MicheleTobias @aimandel
Preparation
@MicheleTobias @aimandel
What is the need/gap you want to fill?
Be specific about what your tool SHOULD do.
Be specific about what you tool WILL NOT do.
Scope creep is real. Ideas are cheap.
Keep a list of ideas to work on later. Ignore the ideas that aren’t your goal.
@MicheleTobias @aimandel
Do your research.
What tools/software/methods already exist?
Do they solve your problem?
If a tool already exists, does the world need another option?
Should you contribute to existing projects instead?
@MicheleTobias @aimandel
Pick a Name Carefully
It’s hard to change the name once your tool is in use
Consider a name that describes the tool’s function
Avoid names that are similar to other tools
Example: Literature Mapper vs. Journal Map - both developed independently
about the same time, have similar goals, but do slightly different things (and
yes, both teams talk now)
@MicheleTobias @aimandel
Make It Happen
@MicheleTobias @aimandel
Draw it!
What is the workflow?
What should the interface look like?
@MicheleTobias @aimandel
Level Up Your Skills
Plenty of FREE resources to
learn what you need:
● Python
● PyQGIS
● QGIS Plugin Development Workflow
● GitHub (or other version control system)
Specific to Literature Mapper:
● Zotero API
@MicheleTobias @aimandel
Don’t get stuck in the preparation phase
Learn the basics and move on.
You’ll learn more as you develop your plugin.
You don’t need to be good at Python to write useful code.
@MicheleTobias @aimandel
Start Small & Add Incrementally
Don’t try to code all the functions at once.
Start with a blank plugin.
Add a blank interface.
Add a button.
Make the button do something.
Keep going.
@MicheleTobias @aimandel
Tell People
@MicheleTobias @aimandel
Let people
see your code
Tell people what
you’re working on
Make it Public
@MicheleTobias @aimandel
Be Loud
Write Documentation
Post on social media
Publish blog posts
Meet with people developing
related tools
Talk at conferences
Write journal articles (for academics)
@MicheleTobias @aimandel
You can do it!
Any questions?
@MicheleTobias @aimandel
Resources
PyQGIS Developer Cookbook:
https://docs.qgis.org/3.16/en/docs/pyqgis_developer_cookbook/ (Especially section
16 “Developing Python Plugins”)
@MicheleTobias @aimandel
Abstract - for reference
This is the story of how one QGIS plugin came to be and the lessons we learned
along the way. The Literature Mapper QGIS Plugin was created to fill a need:
academic journal articles are often about a specific location (this is common in
fields such as ecology, archaeology, and history), but there was no method for
connecting location data to a citation manager. We built the tool we needed from
the idea stage (a paper map hand annotated in pencil), to prototype, to freely
available code in the QGIS Plugin repository, to a tool that is steadily gaining users.
In this talk, we will describe our experience developing the Literature Mapper QGIS
plugin – all the ups and downs – to explain the process and encourage more
people to try making their own plugin.

More Related Content

Similar to QGIS Plugin Development is Not Scary: Lessons Learned from Literature Mapper

UPA2007 Designing Interfaces Jenifer Tidwell
UPA2007 Designing Interfaces Jenifer TidwellUPA2007 Designing Interfaces Jenifer Tidwell
UPA2007 Designing Interfaces Jenifer Tidwellguestf59d1c4
 
Editing Wikipedia as Critical Digital Pedagogy
Editing Wikipedia as Critical Digital PedagogyEditing Wikipedia as Critical Digital Pedagogy
Editing Wikipedia as Critical Digital PedagogyAdeline Koh
 
Adventures in Cat Herding
Adventures in Cat HerdingAdventures in Cat Herding
Adventures in Cat HerdingLarry Belmont
 
Using Data Effectively: Beyond Art and Science
Using Data Effectively: Beyond Art and ScienceUsing Data Effectively: Beyond Art and Science
Using Data Effectively: Beyond Art and ScienceC4Media
 
Libraries as Enablers: Cultivating Contributors in the Age of Curation - Libe...
Libraries as Enablers: Cultivating Contributors in the Age of Curation - Libe...Libraries as Enablers: Cultivating Contributors in the Age of Curation - Libe...
Libraries as Enablers: Cultivating Contributors in the Age of Curation - Libe...Alton "Tony" Zanders
 
Literature review - Identifying, accessing and managing information and Liter...
Literature review - Identifying, accessing and managing information and Liter...Literature review - Identifying, accessing and managing information and Liter...
Literature review - Identifying, accessing and managing information and Liter...Sundar B N
 
Discover and act on insights about people
Discover and act on insights about peopleDiscover and act on insights about people
Discover and act on insights about peopleSteve Portigal
 
Research report writing
Research report writingResearch report writing
Research report writingMichele Knobel
 
Open experiments and open-source
Open experiments and open-sourceOpen experiments and open-source
Open experiments and open-sourcepeircej
 
The civil rights movement ppt for itc 1 kj 7
The civil rights movement ppt for itc 1 kj 7The civil rights movement ppt for itc 1 kj 7
The civil rights movement ppt for itc 1 kj 7hollowaymm
 
Come to the Fiesta! Join the OLE Project
Come to the Fiesta! Join the OLE ProjectCome to the Fiesta! Join the OLE Project
Come to the Fiesta! Join the OLE ProjectDoreen Herold
 
Social media as a tool for terminological research
Social media as a tool for terminological researchSocial media as a tool for terminological research
Social media as a tool for terminological researchTERMCAT
 
The civil rights movement ppt for itc 1 kj 6
The civil rights movement ppt for itc 1 kj 6The civil rights movement ppt for itc 1 kj 6
The civil rights movement ppt for itc 1 kj 6hollowaymm
 
The civil rights movement ppt for itc 1 kj 5
The civil rights movement ppt for itc 1 kj 5The civil rights movement ppt for itc 1 kj 5
The civil rights movement ppt for itc 1 kj 5hollowaymm
 
Navigating the Storm: eMOP, Big DH Projects, and Agile Steering Standards
Navigating the Storm: eMOP, Big DH Projects, and Agile Steering StandardsNavigating the Storm: eMOP, Big DH Projects, and Agile Steering Standards
Navigating the Storm: eMOP, Big DH Projects, and Agile Steering StandardsLiz Grumbach
 
Digital Tools, Trends and Methodologies in the Humanities and Social Sciences
Digital Tools, Trends and Methodologies in the Humanities and Social SciencesDigital Tools, Trends and Methodologies in the Humanities and Social Sciences
Digital Tools, Trends and Methodologies in the Humanities and Social SciencesShawn Day
 
Collaborative Ontology Building Project
Collaborative Ontology Building Project  Collaborative Ontology Building Project
Collaborative Ontology Building Project Jie Bao
 
DMDS Winter Workshop 2 Slides
DMDS Winter Workshop 2 SlidesDMDS Winter Workshop 2 Slides
DMDS Winter Workshop 2 SlidesPaige Morgan
 

Similar to QGIS Plugin Development is Not Scary: Lessons Learned from Literature Mapper (20)

UPA2007 Designing Interfaces Jenifer Tidwell
UPA2007 Designing Interfaces Jenifer TidwellUPA2007 Designing Interfaces Jenifer Tidwell
UPA2007 Designing Interfaces Jenifer Tidwell
 
AntiPatterns
AntiPatternsAntiPatterns
AntiPatterns
 
Editing Wikipedia as Critical Digital Pedagogy
Editing Wikipedia as Critical Digital PedagogyEditing Wikipedia as Critical Digital Pedagogy
Editing Wikipedia as Critical Digital Pedagogy
 
Adventures in Cat Herding
Adventures in Cat HerdingAdventures in Cat Herding
Adventures in Cat Herding
 
Using Data Effectively: Beyond Art and Science
Using Data Effectively: Beyond Art and ScienceUsing Data Effectively: Beyond Art and Science
Using Data Effectively: Beyond Art and Science
 
Libraries as Enablers: Cultivating Contributors in the Age of Curation - Libe...
Libraries as Enablers: Cultivating Contributors in the Age of Curation - Libe...Libraries as Enablers: Cultivating Contributors in the Age of Curation - Libe...
Libraries as Enablers: Cultivating Contributors in the Age of Curation - Libe...
 
Literature review - Identifying, accessing and managing information and Liter...
Literature review - Identifying, accessing and managing information and Liter...Literature review - Identifying, accessing and managing information and Liter...
Literature review - Identifying, accessing and managing information and Liter...
 
Discover and act on insights about people
Discover and act on insights about peopleDiscover and act on insights about people
Discover and act on insights about people
 
Research report writing
Research report writingResearch report writing
Research report writing
 
Open experiments and open-source
Open experiments and open-sourceOpen experiments and open-source
Open experiments and open-source
 
The civil rights movement ppt for itc 1 kj 7
The civil rights movement ppt for itc 1 kj 7The civil rights movement ppt for itc 1 kj 7
The civil rights movement ppt for itc 1 kj 7
 
Come to the Fiesta! Join the OLE Project
Come to the Fiesta! Join the OLE ProjectCome to the Fiesta! Join the OLE Project
Come to the Fiesta! Join the OLE Project
 
Social media as a tool for terminological research
Social media as a tool for terminological researchSocial media as a tool for terminological research
Social media as a tool for terminological research
 
The civil rights movement ppt for itc 1 kj 6
The civil rights movement ppt for itc 1 kj 6The civil rights movement ppt for itc 1 kj 6
The civil rights movement ppt for itc 1 kj 6
 
The civil rights movement ppt for itc 1 kj 5
The civil rights movement ppt for itc 1 kj 5The civil rights movement ppt for itc 1 kj 5
The civil rights movement ppt for itc 1 kj 5
 
Navigating the Storm: eMOP, Big DH Projects, and Agile Steering Standards
Navigating the Storm: eMOP, Big DH Projects, and Agile Steering StandardsNavigating the Storm: eMOP, Big DH Projects, and Agile Steering Standards
Navigating the Storm: eMOP, Big DH Projects, and Agile Steering Standards
 
Digital Tools, Trends and Methodologies in the Humanities and Social Sciences
Digital Tools, Trends and Methodologies in the Humanities and Social SciencesDigital Tools, Trends and Methodologies in the Humanities and Social Sciences
Digital Tools, Trends and Methodologies in the Humanities and Social Sciences
 
Collaborative Ontology Building Project
Collaborative Ontology Building Project  Collaborative Ontology Building Project
Collaborative Ontology Building Project
 
DMDS Winter Workshop 2 Slides
DMDS Winter Workshop 2 SlidesDMDS Winter Workshop 2 Slides
DMDS Winter Workshop 2 Slides
 
Thatcamp recap
Thatcamp recapThatcamp recap
Thatcamp recap
 

More from Michele Tobias

QGIS & the 240 Wine Regions: A Tale of Large Scale Collaborative Digitizing
QGIS & the 240 Wine Regions: A Tale of Large Scale Collaborative DigitizingQGIS & the 240 Wine Regions: A Tale of Large Scale Collaborative Digitizing
QGIS & the 240 Wine Regions: A Tale of Large Scale Collaborative DigitizingMichele Tobias
 
Custom qgis symbols with inkscape
Custom qgis symbols with inkscapeCustom qgis symbols with inkscape
Custom qgis symbols with inkscapeMichele Tobias
 
Inkscape For Art & Science
Inkscape For Art & ScienceInkscape For Art & Science
Inkscape For Art & ScienceMichele Tobias
 
Literature Mapper: Zotero Goes Spatial
Literature Mapper: Zotero Goes SpatialLiterature Mapper: Zotero Goes Spatial
Literature Mapper: Zotero Goes SpatialMichele Tobias
 
QGIS Workshop Introduction - CalGIS 2015
QGIS Workshop Introduction - CalGIS 2015QGIS Workshop Introduction - CalGIS 2015
QGIS Workshop Introduction - CalGIS 2015Michele Tobias
 
The Drone Alternative: Multispectral Kite Aerial Photography & Photo Processi...
The Drone Alternative: Multispectral Kite Aerial Photography & Photo Processi...The Drone Alternative: Multispectral Kite Aerial Photography & Photo Processi...
The Drone Alternative: Multispectral Kite Aerial Photography & Photo Processi...Michele Tobias
 
Open Source Work-flow for Surface Interpolation with Curvilinear Anisotropy
Open Source Work-flow for Surface Interpolation with Curvilinear AnisotropyOpen Source Work-flow for Surface Interpolation with Curvilinear Anisotropy
Open Source Work-flow for Surface Interpolation with Curvilinear AnisotropyMichele Tobias
 
QGIS & Inkscape: Carographic Tools for Attractive Maps
QGIS & Inkscape: Carographic Tools for Attractive MapsQGIS & Inkscape: Carographic Tools for Attractive Maps
QGIS & Inkscape: Carographic Tools for Attractive MapsMichele Tobias
 
Using R for Climate Raster Data Extraction
Using R for Climate Raster Data ExtractionUsing R for Climate Raster Data Extraction
Using R for Climate Raster Data ExtractionMichele Tobias
 

More from Michele Tobias (13)

QGIS & the 240 Wine Regions: A Tale of Large Scale Collaborative Digitizing
QGIS & the 240 Wine Regions: A Tale of Large Scale Collaborative DigitizingQGIS & the 240 Wine Regions: A Tale of Large Scale Collaborative Digitizing
QGIS & the 240 Wine Regions: A Tale of Large Scale Collaborative Digitizing
 
Custom qgis symbols with inkscape
Custom qgis symbols with inkscapeCustom qgis symbols with inkscape
Custom qgis symbols with inkscape
 
What is GIS?
What is GIS?What is GIS?
What is GIS?
 
Inkscape For Art & Science
Inkscape For Art & ScienceInkscape For Art & Science
Inkscape For Art & Science
 
Literature Mapper: Zotero Goes Spatial
Literature Mapper: Zotero Goes SpatialLiterature Mapper: Zotero Goes Spatial
Literature Mapper: Zotero Goes Spatial
 
Inkscape cartography
Inkscape cartographyInkscape cartography
Inkscape cartography
 
QGIS Workshop Introduction - CalGIS 2015
QGIS Workshop Introduction - CalGIS 2015QGIS Workshop Introduction - CalGIS 2015
QGIS Workshop Introduction - CalGIS 2015
 
The Drone Alternative: Multispectral Kite Aerial Photography & Photo Processi...
The Drone Alternative: Multispectral Kite Aerial Photography & Photo Processi...The Drone Alternative: Multispectral Kite Aerial Photography & Photo Processi...
The Drone Alternative: Multispectral Kite Aerial Photography & Photo Processi...
 
Maps with leafletR
Maps with leafletRMaps with leafletR
Maps with leafletR
 
Intro Open Source GIS
Intro Open Source GISIntro Open Source GIS
Intro Open Source GIS
 
Open Source Work-flow for Surface Interpolation with Curvilinear Anisotropy
Open Source Work-flow for Surface Interpolation with Curvilinear AnisotropyOpen Source Work-flow for Surface Interpolation with Curvilinear Anisotropy
Open Source Work-flow for Surface Interpolation with Curvilinear Anisotropy
 
QGIS & Inkscape: Carographic Tools for Attractive Maps
QGIS & Inkscape: Carographic Tools for Attractive MapsQGIS & Inkscape: Carographic Tools for Attractive Maps
QGIS & Inkscape: Carographic Tools for Attractive Maps
 
Using R for Climate Raster Data Extraction
Using R for Climate Raster Data ExtractionUsing R for Climate Raster Data Extraction
Using R for Climate Raster Data Extraction
 

Recently uploaded

Salesforce Adoption – Metrics, Methods, and Motivation, Antone Kom
Salesforce Adoption – Metrics, Methods, and Motivation, Antone KomSalesforce Adoption – Metrics, Methods, and Motivation, Antone Kom
Salesforce Adoption – Metrics, Methods, and Motivation, Antone KomCzechDreamin
 
"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor Turskyi"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor TurskyiFwdays
 
Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo Diehl
Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo DiehlFuture Visions: Predictions to Guide and Time Tech Innovation, Peter Udo Diehl
Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo DiehlPeter Udo Diehl
 
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptx
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptxIOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptx
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptxAbida Shariff
 
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...Product School
 
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMsTo Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMsPaul Groth
 
Free and Effective: Making Flows Publicly Accessible, Yumi Ibrahimzade
Free and Effective: Making Flows Publicly Accessible, Yumi IbrahimzadeFree and Effective: Making Flows Publicly Accessible, Yumi Ibrahimzade
Free and Effective: Making Flows Publicly Accessible, Yumi IbrahimzadeCzechDreamin
 
SOQL 201 for Admins & Developers: Slice & Dice Your Org’s Data With Aggregate...
SOQL 201 for Admins & Developers: Slice & Dice Your Org’s Data With Aggregate...SOQL 201 for Admins & Developers: Slice & Dice Your Org’s Data With Aggregate...
SOQL 201 for Admins & Developers: Slice & Dice Your Org’s Data With Aggregate...CzechDreamin
 
Integrating Telephony Systems with Salesforce: Insights and Considerations, B...
Integrating Telephony Systems with Salesforce: Insights and Considerations, B...Integrating Telephony Systems with Salesforce: Insights and Considerations, B...
Integrating Telephony Systems with Salesforce: Insights and Considerations, B...CzechDreamin
 
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024Tobias Schneck
 
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...Product School
 
How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...Product School
 
Connector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a buttonConnector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a buttonDianaGray10
 
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered QualitySoftware Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered QualityInflectra
 
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...Thierry Lestable
 
Speed Wins: From Kafka to APIs in Minutes
Speed Wins: From Kafka to APIs in MinutesSpeed Wins: From Kafka to APIs in Minutes
Speed Wins: From Kafka to APIs in Minutesconfluent
 
Essentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with ParametersEssentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with ParametersSafe Software
 
Search and Society: Reimagining Information Access for Radical Futures
Search and Society: Reimagining Information Access for Radical FuturesSearch and Society: Reimagining Information Access for Radical Futures
Search and Society: Reimagining Information Access for Radical FuturesBhaskar Mitra
 
IESVE for Early Stage Design and Planning
IESVE for Early Stage Design and PlanningIESVE for Early Stage Design and Planning
IESVE for Early Stage Design and PlanningIES VE
 
Powerful Start- the Key to Project Success, Barbara Laskowska
Powerful Start- the Key to Project Success, Barbara LaskowskaPowerful Start- the Key to Project Success, Barbara Laskowska
Powerful Start- the Key to Project Success, Barbara LaskowskaCzechDreamin
 

Recently uploaded (20)

Salesforce Adoption – Metrics, Methods, and Motivation, Antone Kom
Salesforce Adoption – Metrics, Methods, and Motivation, Antone KomSalesforce Adoption – Metrics, Methods, and Motivation, Antone Kom
Salesforce Adoption – Metrics, Methods, and Motivation, Antone Kom
 
"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor Turskyi"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor Turskyi
 
Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo Diehl
Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo DiehlFuture Visions: Predictions to Guide and Time Tech Innovation, Peter Udo Diehl
Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo Diehl
 
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptx
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptxIOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptx
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptx
 
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
 
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMsTo Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
 
Free and Effective: Making Flows Publicly Accessible, Yumi Ibrahimzade
Free and Effective: Making Flows Publicly Accessible, Yumi IbrahimzadeFree and Effective: Making Flows Publicly Accessible, Yumi Ibrahimzade
Free and Effective: Making Flows Publicly Accessible, Yumi Ibrahimzade
 
SOQL 201 for Admins & Developers: Slice & Dice Your Org’s Data With Aggregate...
SOQL 201 for Admins & Developers: Slice & Dice Your Org’s Data With Aggregate...SOQL 201 for Admins & Developers: Slice & Dice Your Org’s Data With Aggregate...
SOQL 201 for Admins & Developers: Slice & Dice Your Org’s Data With Aggregate...
 
Integrating Telephony Systems with Salesforce: Insights and Considerations, B...
Integrating Telephony Systems with Salesforce: Insights and Considerations, B...Integrating Telephony Systems with Salesforce: Insights and Considerations, B...
Integrating Telephony Systems with Salesforce: Insights and Considerations, B...
 
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
 
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
 
How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...How world-class product teams are winning in the AI era by CEO and Founder, P...
How world-class product teams are winning in the AI era by CEO and Founder, P...
 
Connector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a buttonConnector Corner: Automate dynamic content and events by pushing a button
Connector Corner: Automate dynamic content and events by pushing a button
 
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered QualitySoftware Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
 
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
 
Speed Wins: From Kafka to APIs in Minutes
Speed Wins: From Kafka to APIs in MinutesSpeed Wins: From Kafka to APIs in Minutes
Speed Wins: From Kafka to APIs in Minutes
 
Essentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with ParametersEssentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with Parameters
 
Search and Society: Reimagining Information Access for Radical Futures
Search and Society: Reimagining Information Access for Radical FuturesSearch and Society: Reimagining Information Access for Radical Futures
Search and Society: Reimagining Information Access for Radical Futures
 
IESVE for Early Stage Design and Planning
IESVE for Early Stage Design and PlanningIESVE for Early Stage Design and Planning
IESVE for Early Stage Design and Planning
 
Powerful Start- the Key to Project Success, Barbara Laskowska
Powerful Start- the Key to Project Success, Barbara LaskowskaPowerful Start- the Key to Project Success, Barbara Laskowska
Powerful Start- the Key to Project Success, Barbara Laskowska
 

QGIS Plugin Development is Not Scary: Lessons Learned from Literature Mapper

  • 1. @MicheleTobias @aimandel QGIS Plugin Development Is Not Scary Lessons Learned from Literature Mapper Michele Tobias, PhD & Alex Mandel, Phd FOSS4G - Buenos Aires, Argentina - Sept. 27-Oct.2, 2021
  • 2. @MicheleTobias @aimandel Who are we? Michele Tobias Geospatial Data Specialist University of California Davis’ DataLab Mastermind behind Literature Mapper Coding for text parsing Really bad a Python Frequent user of QGIS and R and SQL Alex Mandel Geospatial Engineer Development Seed Advises on feasibility Coding for interface functions Much better at Python Literature Mapper is NOT a product of UC Davis or Development Seed.
  • 3. @MicheleTobias @aimandel What is Literature Mapper? An experimental Python QGIS Plugin, available in the plugin repository Connects Zotero (an open source citation manager) with QGIS Allows users to georeference their citations through QGIS Store location information inside the Zotero database to keep the spatial and non-spatial data together
  • 5. @MicheleTobias @aimandel Literature Mapper’s Story Academic journal articles are often about a specific location Plants & Animals Geology Social Justice History … ALL of these happen in a location & location matters.
  • 6. @MicheleTobias @aimandel Literature Mapper’s Story We might care about the spatial distribution of studies BUT There was no method for connecting location data to a citation manager We identified a need that had no available solution.
  • 7. @MicheleTobias @aimandel The Building Process 1. Idea stage (a paper map hand annotated in pencil) 2. Prototype “proof of concept” 3. Code in the QGIS Plugin repository 4. A tool that is steadily gaining users
  • 9. @MicheleTobias @aimandel What is the need/gap you want to fill? Be specific about what your tool SHOULD do. Be specific about what you tool WILL NOT do. Scope creep is real. Ideas are cheap. Keep a list of ideas to work on later. Ignore the ideas that aren’t your goal.
  • 10. @MicheleTobias @aimandel Do your research. What tools/software/methods already exist? Do they solve your problem? If a tool already exists, does the world need another option? Should you contribute to existing projects instead?
  • 11. @MicheleTobias @aimandel Pick a Name Carefully It’s hard to change the name once your tool is in use Consider a name that describes the tool’s function Avoid names that are similar to other tools Example: Literature Mapper vs. Journal Map - both developed independently about the same time, have similar goals, but do slightly different things (and yes, both teams talk now)
  • 13. @MicheleTobias @aimandel Draw it! What is the workflow? What should the interface look like?
  • 14. @MicheleTobias @aimandel Level Up Your Skills Plenty of FREE resources to learn what you need: ● Python ● PyQGIS ● QGIS Plugin Development Workflow ● GitHub (or other version control system) Specific to Literature Mapper: ● Zotero API
  • 15. @MicheleTobias @aimandel Don’t get stuck in the preparation phase Learn the basics and move on. You’ll learn more as you develop your plugin. You don’t need to be good at Python to write useful code.
  • 16. @MicheleTobias @aimandel Start Small & Add Incrementally Don’t try to code all the functions at once. Start with a blank plugin. Add a blank interface. Add a button. Make the button do something. Keep going.
  • 18. @MicheleTobias @aimandel Let people see your code Tell people what you’re working on Make it Public
  • 19. @MicheleTobias @aimandel Be Loud Write Documentation Post on social media Publish blog posts Meet with people developing related tools Talk at conferences Write journal articles (for academics)
  • 20. @MicheleTobias @aimandel You can do it! Any questions?
  • 21. @MicheleTobias @aimandel Resources PyQGIS Developer Cookbook: https://docs.qgis.org/3.16/en/docs/pyqgis_developer_cookbook/ (Especially section 16 “Developing Python Plugins”)
  • 22. @MicheleTobias @aimandel Abstract - for reference This is the story of how one QGIS plugin came to be and the lessons we learned along the way. The Literature Mapper QGIS Plugin was created to fill a need: academic journal articles are often about a specific location (this is common in fields such as ecology, archaeology, and history), but there was no method for connecting location data to a citation manager. We built the tool we needed from the idea stage (a paper map hand annotated in pencil), to prototype, to freely available code in the QGIS Plugin repository, to a tool that is steadily gaining users. In this talk, we will describe our experience developing the Literature Mapper QGIS plugin – all the ups and downs – to explain the process and encourage more people to try making their own plugin.