Let’s talk about air quality data! Join us for Open Call on this topic every Tuesday until Dec. 14. Click here for details!

The Public Lab Blog

stories from the Public Lab community

About the blog | Research | Methods

Software Community Growth through "first-timers-only" issues

by gauravano with warren | over 2 years ago | 15 | 7

first-timers-only issues are those which are written in a very engaging, welcoming way, far different than the usual "just report the bug" type of GitHub issue. To read more about these, check out firsttimersonly.com, which really captures how and why this works and is beginning to be a movement in open source coding outreach! Beyond the extra welcome, this also includes getting such well-formatted issues out in front of lots of people who may be contributing to open source software for the very first time.

It takes a LOT of work to make a good issue of this type, and we often walk through each step required to actually make the requested changes -- the point is to help newcomers understand that a) they're welcome, and b) what the collaboration workflow looks like. Read more at https://publiclab.org/software-outreach !

Since early 2016, we at Public Lab are working to make our open source software projects more welcoming and inclusive and to grow our software contributor community in diversity and size. Creation of First-timers-only issues was also started at Public Lab near the end of 2016 - https://publiclab.org/notes/warren/10-31-2016/create-a-welcoming-first-timers-only-issue-to-invite-new-software-contributors

Now, as GSoC, Outreachy, and other outreach programs are seeking proposals for the upcoming summer, we put a lot of extra time and work into welcoming newcomers into our community and making sure they are well-supported. We've seen a huge increase in newcomers and wanted to report in about how this process has scaled!

Till now, nearly 409 FTO issues has been created across our projects which shows how many people have been welcomed in the Open Source 🌐 and in our community by the collaborative efforts of all of us.

From March 9, 2019, we started maintaining the list of people who want to work on various projects of Public Lab - https://github.com/publiclab/plots2/issues/4963 through first-timers-only issues. And, we are proud to announce that in past 20 days, we all have created 55 FTO issues i.e., 13% of total Public Lab FTO issues(from beginning) are created in last 20 days. The growth is really tremendous and all this has been possible due to contribution of each community member.

The idea of maintaining the list of FTO issue-seekers is a big success. We have been able to assign issues to nearly 50 contributors in the past 20 days. And, each day the list is growing and we are opening more and more FTO issues for helping new contributors in taking their first-step in Open Source with Public Lab.

Those community members who have shown some tremendous support for creating FTO issues and they really ensured that there is a check mark next to the name of each newcomer: @cess @gauravano @warren @lekhidugtal @Harshithpabbati @divyabaid16 @IshaGupta18 @anan12 @sashadev-sky @madeofhuman @HarshK @Divy123 @Rishabh570 @gautami_gg

Thank you everyone for the great work and cheers to this awesome community growth 🎉 🥂 💯

(The main image is a screenshot taken from GitHub Visualizer. To see the whole visualization, visit the link

Read more Follow

web-development webworkinggroup software blog

Providence, RI software development fellowship

by warren | over 2 years ago | 0 | 3

Dates: April-May 2019

Location: Providence, RI

Compensation: $2,500-$4,500, based on experience and qualifications

Terms: Contract

The Public Laboratory for Open Technology and Science (Public Lab) is a community--supported by a 501(c)(3) non-profit--which develops and applies open-source tools to environmental exploration and investigation. By democratizing inexpensive and accessible Do-It-Yourself techniques, Public Lab creates a collaborative network of practitioners who actively re-imagine the human relationship with the environment.

Position Summary

We are looking for a code fellow to work in our Providence office for a term of 6-8 weeks (depending on hours) at approximately 20 hours per week to assist in the upgrading and expansion of the MapKnitter website, which assists communities in creating maps of environmental issues using aerial photos. The fellowship position will be part of a team of 6+ developers from around the world.

MapKnitter.org is a Ruby on Rails website with:

Public Lab's open code community (https://code.publiclab.org) is a diverse, global group of contributors who are committed to respect and mutual support, and to code and community practices which support newcomers. Our goal is to develop and maintain software that supports environmental monitoring and online collaboration in the broader Public Lab community. Our Code of Conduct can be found at https://publiclab.org/conduct.

Responsibilities will include:

  • Setup of a local development copy of the MapKnitter software
  • Installing and testing gem upgrades from https://github.com/publiclab/mapknitter/labels/dependencies
  • Helping to coordinate upgrades with project team members; cooperatively reading and reviewing code
  • Identifying and listing UI issues related to MapKnitter upgrades as the project develops
  • Assisting in Rails version upgrades
  • Designing and building tests for MapKnitter's automated test suite

For context, see our overall project plan: https://github.com/publiclab/mapknitter/issues/300

Candidates should have experience with the following, although we can provide some support and training:

  • HTML/CSS and JavaScript
  • familiarity with Ruby on Rails
  • git/Github workflow

We also ask that candidates have:

  • The ability to balance multiple competing tasks and requests, and enjoyment from efficiently working toward goals and deadlines
  • A desire for and fulfillment from working on a team, but also an ability to work independently on job tasks
  • Incredible interpersonal skills, demonstrating great communication, kindness, respect, and patience within our collaborative work environment
  • An enjoyment of problem solving and the ability to put this to use in areas where project operations could be improved
  • Willingness to work remotely with some colleagues

Application process

Step 1: Please claim and complete one "first-timers-only" issue from the MapKnitter open source project: https://github.com/publiclab/mapknitter/labels/pvd. Our code welcoming program supports newcomers in making their first contribution, and you'll be compensated for your time with a $50 stipend upon completion. This compensation is only available for fellowship applicants from the Providence, RI area, and applicants will need to show that they have successfully installed the application on their computer.

Step 2: Upload your application materials to the following form by March 22. No phone calls please.


Application materials:

  • a paragraph describing your interest in the project
  • an example of non-Public Lab Rails application work (your own project or a contribution towards a project) on GitHub or a similar site
  • a link to your GitHub profile page or equivalent (GitLab, etc)
  • a link to the completed first-timers-only issue from Step 1

Public Lab is an equal opportunity employer committed to a diverse, multicultural work environment. We encourage people with different ability sets, people of color, and people of diverse sexual orientations, gender expressions and identities to apply.

Read more Follow

providence software blog code

Call for Summer of Code 2019 proposals!

by warren | over 2 years ago | 20 | 5

Outreachy and GSoC

We're part of two different summer fellowship programs this year, Outreachy and Google Summer of Code (#GSoC) -- both recruit software contributors to work on open source projects. We may also join Rails Girls Summer of Code (#RGSoC) once it opens, but would need to be accepted first.

We've done GSoC for a few years now, and are really excited to be part of RGSoC for a third year and Outreachy for a second season. Outreachy writes:

We expressly invite women (both cis and trans), trans men, and genderqueer people to apply. We also expressly invite applications from residents and nationals of the United States of any gender who are Black/African American, Hispanic/Latin@, Native American/American Indian, Alaska Native, Native Hawaiian, or Pacific Islander. Anyone who faces under-representation, systemic bias, or discrimination in the technology industry of their country is invited to apply.

So, we're asking students from both programs to start posting their proposals for comment, here. Read on!


Outreachy's application deadline is the March 26, 2019 at 4pm UTC. GSoC applications will be open between March 25, 2019 - April 9, 2019.

Read proposal ideas

Once you've gotten a bit familiar with our project (see our welcome page here), the first step is to look over our ideas page, which you can find here. These were collected from the brainstorm we did earlier in the year.

For Outreachy, we will be posting a project idea soon on the Outreachy website.

Please feel free to ask questions in the comments below, or to join our chat channel at https://publiclab/chat

Our welcoming page will help you understand how we collaborate, and we'll be there to help you take your first step. And try tackling a first-timers-only issue, to get an idea of how to become a contributor!

Also, read this page carefully to understand our workflow and how we structure summer of code projects: https://publiclab.org/wiki/gsoc#How+we+work

Please ask questions! We're very friendly and we love welcoming new people into our community.

New this year

Once the term starts, we'll be asking all participants to review another person's work at least once time per week, and to either post a first-timers-only issue or help someone who's working on one once weekly. This will help us continue to support our growing community!

Post a proposal for comment

Once you've read through some of these ideas and become a bit more familiar with our projects, it's time to post a proposal of your own.

You don't need to have a complete or even concrete idea -- share your thoughts early and we'll help you refine your proposal, and help you choose something that's the right difficulty level as well as being something our project really needs.

We've created a template for you to post a proposal here. Click this button to begin:

Start drafting a proposal

Read other proposals

Before or after you post your own draft, read through others' listed below. Your best comments and input may come from other applicants!

Also see 2018's proposals here


Title Author Updated Likes Comments
GSOC-19 Mapknitter synchronous editing @vidit over 2 years ago 2
SoC proposal: Image Sequencer: Broadening Avenues @vibhordelgupta over 2 years ago 2
SoC proposal: Image Sequencer @lohithabhagam123 over 2 years ago 0
GSoC proposal: Mapknitter Upgrade to Rails 6 @singhav over 2 years ago 2
GSoC proposal: Mapknitter Image Management and Synchronous Editing @divyabaid16 over 2 years ago 2
SoC proposal: PublicLab.Editor @f20171066 over 2 years ago 1
GSoC proposal: Mapknitter Image Management and Synchronous Editing @igniteeng000 over 2 years ago 3
SoC proposal: Improving UI and Structure of Leaflet Environmental Layers @rkpattnaik780 over 2 years ago 5
SoC proposal: Image Sequencer @f20171066 over 2 years ago 6
SoC proposal: Sensor data upload and display library @shakebameen over 2 years ago 0
SoC proposal: Sensor data upload and display library @shakebameen over 2 years ago 3
MapKnitter Aerial Image labelling to detect Environmental issues using machine vision @sauvzi13397 over 2 years ago 5
GSoC Proposal 2019: Mapknitter's Rails Upgrade @alaxallves over 2 years ago 5
GSoC proposal: Image Sequencer @aashnaaashna over 2 years ago 9
SoC proposal: Image-Sequencer v3: Boosting the performance and adding demonstration based on colorimetry @lit2017001 over 2 years ago 7
GSoC proposal: Automated feature detection and matching #300 https://github.com/publiclab/image-sequencer/issues/300 @puneetbindal8989 over 2 years ago 0
GSoC proposal: Automated feature detection and matching #300 https://github.com/publiclab/image-sequencer/issues/300 @puneetbindal8989 over 2 years ago 2
SOC proposal: Extend Leaflet Environmental Layers with new layer menu and layer addition workflow @anan12 over 2 years ago 5
SoC Proposal : Spectral Workbench Capture @sidntrivedi012 over 2 years ago 12
[withdrawn] GSoC Proposal: Mapknitter Overhaul @gauravano over 2 years ago 1
SoC proposal: MapKnitter Image Management & User Experience @govindjeevan7 over 2 years ago 4
Outreachy proposal: Extend Leaflet Environmental Layers with new layer menu and layer addition workflow @priya17081 over 2 years ago 10
SOC 2019: A small proposal for global environmental monitoring @MaggPi over 2 years ago 13
GSoC Proposal: Mapknitter Rails 6 upgrade @kaustubh_nair over 2 years ago 6
Show more


Ask a question  or help answer future questions on this topic

Read more Follow

software gsoc blog code

Leaflet.DistortableImage full resolution download

by warren | almost 3 years ago | 0 | 3

Across the Public Lab community, people are making their own maps using aerial photos (by balloon mapping, kite mapping, and the like) with the MapKnitter website - which helps people "stitch" or "knit" images into a combined map, using an existing satellite map base layer as a reference.

The core of MapKnitter's interface, the Leaflet.DistortableImage library, is seeing some new life as members of our coding community have started to dig in and make improvements! Its main goal of letting people distort aerial images to fit onto a map is being refined, debugged, and expanded. (This was made possible in part with support from NASA's AREN project)

Above, a new feature you can see in the menu is a full resolution download -- with no server-side processing at all. This was made possible through a lot of work by John905 and rexagod.

Try it out in the demo: https://publiclab.github.io/Leaflet.DistortableImage/examples/

This takes the original full resolution image and distorts it in your browser (you may need to allow popups), and then downloads.

For example, the lead image generated this full-res distorted image: full.png (2304x1536 pixels)

See the preview below.

This may mean that for some smaller MapKnitter maps, you won't need to run a full export, which can take a while. This code should publish on MapKnitter within the next few days. Down the road, we're looking at more ways to refine the export process to make it even easier to make your own maps using balloon, kite, pole, or drone mapping.

image description

Read more Follow

balloon-mapping kite-mapping mapknitter aerial-photography

RV SensorShip V

by cfastie | almost 3 years ago | 2 | 7

The original SensorShip had four environmental sensors and it was hard to cram all the wiring into the sailboat I printed for it. I was also concerned that a sailboat is not a ship. I also wanted a SensorShip with more sensors. So I searched Thingiverse for a more appropriate vessel.

Figure 1. An ESP8266 board and the bi- and trifurcating wiring harness for five I²C sensors (each sensor gets connected to the same four pins on the board). Plus three LEDs and a piezo buzzer. I’m going to need a bigger boat.

I quickly found Peter Sripol’s Utility Ship and the easier to print "make" of it by 08stanis. I immediately liked this ship because I had just reread Steinbeck’s The Log from the Sea of Cortez and the model reminded me of the Western Flyer.

Figure 2. The Western Flyer was built in 1937 and spent six weeks in 1940 in the Sea of Cortez with John Steinbeck and Ed Ricketts aboard. She had a long, hard life and was recently lifted off the harbor bottom and brought onto the hard.

Figure 3. The Western Flyer is being restored in Port Townsend, WA and will be used as a floating classroom and memorial to the poorly-formed ideas of Steinbeck and Ricketts about ecology and politics. Learn more here.

The new model is not really a ship, but it is a bigger boat and is designed to be easy to open to install stuff inside. It is intended for printing about two feet long, but it works well when printed 7.5 inches long.

Figure 4. The new RV SensorShip V is easy to print in 15 pieces and fun to glue together especially if assembling model boats is one of your favorite things to do. I used superglue.

Figure 5. The entire deck of RV SensorShip V can be used like a lid so it’s easy to install important stuff inside.

Figure 6. RV SensorShip V has five I²C sensors. Clockwise from upper left: BME280 (temperature, humidity, pressure), MLX90615 (thermal IR), VL53LOX (laser rangefinder), TSL2561 (light level), and MMA8451 (3 axis accelerometer). The paperclip on the left is for scale.

Figure 7. Two sensors are mounted on the stern deck of RV SensorShip V so they can be directed together at areas of interest. The laser rangefinder (right) and thermal IR (left) sensors are both directional.

Figure 8. Screen capture from the Blynk app of three hours of the data records from three of the five sensors on RV SensorShip V. The ship was next to my 3D printer when a 30-minute print was running. The laser rangefinder and thermal IR sensors were pointed toward the print head.

SensorShips incorporate ESP8266 microcontroller boards with integrated Wi-Fi. Data from the sensors are sent via Wi-Fi to the internet. This SensorShip sends its data to a Blynk server and the data can be viewed on a mobile device in real time.

A new feature of this SensorShip is the pair of directional sensors on the stern deck. I oriented the ship so these sensors were pointed near the print head while a short 3D print was made. Both of these sensors and also the accelerometer captured a clear record of when the 3D printer was operating (Figure 8).

This past weekend there were three days in a row with nighttime temperatures near 0°F. I have been heating my house with a woodstove this winter and was concerned that the cold snap might freeze pipes in the basement. I placed RV SensorShip V in the crawlspace where the most vulnerable pipes are. Fortunately we had some snow before the weekend, so I was able to bank the foundation with snow to provide some insulation.

Figure 9. I banked snow around the entire house before the cold weekend.

Figure 10. Temperature results from three different SensorShips for a week including a very cold weekend. RV SensorShip V (bottom) had its directional sensors pointed at the most vulnerable pipes in the crawlspace. The rangefinder was well positioned to detect raccoons. On Tuesday the 15th (dashed line) I surrendered and started using the oil furnace in addition to the woodstove. This figure is made from three screen captures from the Blynk app which were combined and annotated in Photoshop.

The basement low temperature dropped about one degree F for each of the cold nights finally dropping into the 30s F. I thought I had weathered the weather, but more cold nights were forecast, and in a few days the daytime high is forecast to be not much above 0°F. The woodstove would have a difficult time counteracting such temperatures, and provides almost no heat to the basement, so I ordered more heating oil for the furnace (which is in the basement).

I ran the furnace four times (Figure 10) in the first three days after the delivery (I had been out of oil since April). I learned that in order to raise the temperature on the first floor of the house into the 60s F, the temperature in the basement has to be warmed into the 50s F. That’s one reason I don’t like to use the furnace, but I think I will be very thankful for it over the next several days when the four-day average temperature will be very close to 0°F.

All three of the SensorShips use an ESP8266 board and connect to the internet via the integrated Wi-Fi. So SensorShips must remain in the range of my home Wi-Fi signal. I was pleased that RV SensorShip V had no problem connecting from the basement, even though the Wi-Fi router is on the second floor at the other end of the house.

All of the SensorShips are powered by 5V phone chargers plugged into the wall. They would last only a couple of days if powered by batteries because everything is powered continuously. I have not yet figured out how to sleep the ESP8266 boards or to use a low power external timer with them (my first attempt to use a timer failed). Let me know if you know a trick for using these boards with a TPL5110 timer.

Read more Follow

arduino sensors blog wi-fi

Seeking GIS / Data folks: Help us create a nation Lead Exposure Risk map.

by read_holman | almost 3 years ago | 7 | 6

Background on lead at: publiclab.org/lead


Quite a bit of public data exists now that, if brought together, can paint the picture of lead exposure within neighborhoods across the country. This information is useful to a couple audiences: Concerned citizens can see what their risk is; this is general. More specifically and strategically: Community scientists and activists can prioritize where they work. And Public Health officials can prioritize where they work.

There are a few efforts out there, but much of it is local (particular to one city and/or state), or is incomplete or due for an upgrade. We’re seeking data scientists, epidemiologists, and GIS folks to build on these efforts.

The output is a simple map with lead risk scores presented by a geographical unit (census track, neighborhood, etc). The effort should be done in the open and documented (presumably on github, but maybe also here on publiclab.org).

If this is interesting to you, let us know and we can figure out how to work together.

The following are examples of work in this area. Each is useful and has strengths but (I think) insufficient.

Example 1: Washington State Department of Health

image description

Source: https://fortress.wa.gov/doh/wtn/WTNPortal/#!q0=4718

Childhood Lead Risk Map For this measure we combined two variables: Percent people living below the 125% Federal Poverty Level (FPL) and Percent Housing built before 1980 (and weighted by era built).

Information About the Data In addition to the census of every U.S. household every 10 years, as required by the U.S. Constitution, the Census Bureau has a sub-sample, yearly survey called the American Community Survey (ACS). This representative sample-based survey gathers characteristics for a subset of the entire population of the U.S. each year.

You can find supporting documentation on code lists, subject definitions, data accuracy, and statistical testing on the ACS website, Data and Documentation section. You can find sample size and data quality measures (including coverage rates, allocation rates, and response rates) on the ACS website in the Methodology section.

Example 2: Vox (with Washington State Department of Health)

image description

Source: https://www.vox.com/a/lead-exposure-risk-map Github: https://github.com/voxmedia/data-projects/tree/master/vox-lead-exposure-risk

From the article: “The trouble is that exposure risk is surprisingly difficult estimate, due to a variety of state-by-state differences in reporting standards. So we worked with epidemiologists in Washington state to estimate risk levels in every geographic area in America…

Our map uses a methodology that Washington State’s Department of Health pioneered earlier this year to estimate kids’ risk of lead exposure in different neighborhoods. Their mission was to determine how to focus scarce public health dollars on the kids most at risk of being poisoned by lead. We worked with one of the chief epidemiologists who created the map, Rad Cunningham, to replicate the state’s methodology nationally and apply it to all 72,241 census tracts in the United States.”

Example 3: Reuters

Screen shot of national map made by Reuters

Source: https://www.reuters.com/investigates/special-report/usa-lead-testing/#article-off-the-charts

From the article: “Most U.S. states disclose data on the percentage of child blood tests that show elevated levels of lead. Yet this data, often for statewide or county-wide populations, is too broad to identify neighborhoods where children face the greatest risk.

Instead, Reuters sought testing data at the neighborhood level, in census tracts or zip code areas, submitting records requests to all 50 states.

U.S. census tracts are small county subdivisions that average about 4,000 residents apiece. Zip codes have average populations of 7,500. In each area, a relatively small number of children are screened for lead poisoning each year.

Reuters found 2,606 census tracts, and another 278 zip code areas, with a prevalence of lead poisoning at least twice Flint’s rate."

If you're a data guru, GIS epidemiologist, or just someone who wants to contribute to this effort, post a comment below or reach out to Read Holman at read@publiclab.org. Thanks!

Read more Follow

mapping blog request lead