Campbell Reading Group Chapter 3 Water

Goodbye cobwebs! Hello shiny, new blog post!

Since last posting I started grad school and joined The Sumner Lab at UC Davis and have began a project studying interesting metabolism of microbial mats in Antarctic lakes.

A few weeks ago, some minions from the DIB Lab started a reading group to go through the introductory biology textbook Campbell biology in an effort to learn from each other’s backgrounds and broaden our knowledge base. Our group has biologists and computer scientists, and a spread of experience levels. Each week, someone presents a chapter that we’ve all read. Turns out, biology is really fun to talk about! Discussions usually go off on interesting tangents about an interesting biology facet, details of definitions of foundational concepts, or how to effectively teach concepts to students. My motivation for these posts are to share tidbits of interesting discussion and potentially be corrected on anything I might have gotten wrong here. :)

This post is about chapter 3, “Water and Life”. It is the second chapter in Unit 1: The Chemistry of Life. Taylor Reiter began the discussion by having us carefully pour water on top of coins to demonstrate cohesion and spoke about the implications of that with adhesion and surface tension (ie bugs walking on water!).

Hydrogen Bonding

We discussed connection between hydrogen bonding and how it relates to the unique properties of water. In short, hydrogen bonding is an attraction between highly electronegative covalently bonded atom (nitrogen, oxygen, or fluorine) and a hydrogen covalently bonded to another N, O, or F. The covalently shared electrons are pulled closer to the electronegative atom, giving it a partial negative charge and the hydrogen a partial positive charge. The partial positive hydrogen will form an interaction with a partial negative N, O, or F or neighboring molecule in an aqueous solution.

Image from https://en.wikipedia.org/wiki/Hydrogen_bond#/media/File:3D_model_hydrogen_bonds_in_water.svg

A common mistake that undergraduate students make when learning about hydrogen bonding is that it can happen between all hydrogens and other molecules, but this is only the case when covalently bonded to N, O, and F, which are electronegative and have a small atomic radius.

Hydrogen bonding causes the solid form of H2O (ice) to be less dense than the liquid form! In general it makes sense that in a solid form, molecules are packed together more tightly and thus has a higher density. However, the hydrogen bonding in water organizes the molecules to have more space in between them, resulting in a less dense crystalline structure.

Image from https://upload.wikimedia.org/wikipedia/commons/8/88/Ice_XI_View_along_c_axis.png

Specific Heat of Water

The specific heat of a substance is the amount of energy to be absorbed or lost for 1 g of the substance to change its temperature by 1°C. Conveniently for water, 1 g = 1 mL because its density is 1 g = 1 cm^3 = 1 mL. The specific heat of water is higher than substances of structural similarity and composition because of the high amount of hydrogen bonding. Water molecules stick together closer than a molecule of hydrocarbon chains because of these interactions, which results in water requiring more energy to change its temperature than a liquid composed of molecules that don’t interact as strongly.

Evaporative Cooling

If you’ve ever had the pleasure of living in a sweltering climate, you may have taken the drastic measure of pouring water on your head in an effort to cool down. This works thanks to evaporative cooling, which allows humans to cool down by sweating and outrun horses who would overheat. Heat produced from your body is transferred to water molecules in sweat. These molecules become excited and evaporate, taking some heat with them. As a child I remember being told that sweating cools your off and always wondered how secreting a liquid causes this – but it’s the evaporation of water, not the production of it, that does the trick!

Hydrophobic and Hydrophilic: Language is Important!

Hydrophilic molecules have polar bonds (less equal electron sharing) and readily interact with water molecules through partial negative and partial positive interactions and thus are attracted to water and each other. Hydrophobic molecules are nonpolar molecules (more equal electron sharing) and don’t have attractive forces with water, polar molecules, or each other.

Karen Word pointed out a common misconception about hydrophobic interactions held by students first learning this material. Hydrophilic molecules are attracted to each other, but hydrophobic molecules are not attracted to each other. However, a common misconception is that both types of molecules are attracted to other molecules of the same type. Hydrophobic molecules are pushed out of solution by the stronger interactions of hydrophilic molecules. Of course Van der Waals forces exist and cause some dipole among nonpolar molecules, but these are much, much weaker than other dipole based intermolecular interactions. Karen also mentioned that she combats this misconception by using careful language and repeating this conception multiple times when teaching.

That is all for today! The next chapter is still in chemistry land, where I feel comfortable because of my background. Subsequent posts will likely have less explanation and more open ended questions.

My Experience at PyCon 2016

I recently attended my first conference, PyCon 2016! Spoiler alert: it went really well.

PyCon is a convention for the Python programming language. A big thank you to Titus for making it possible for me to go. I always learn a lot when I assume the role of a fish out of water, and this was no exception. Also, Portland is a really cool city!

Expectations beforehand

I haven’t been to an academic or tech conference before and didn’t know what to expect, leading to an irrational worry that being less experienced than most attendees would negatively impact my experience, as my background is in chemistry and biology. At some point on the plane ride to Portland, I realized that PyCon is similar to swing dancing workshops I have previously attended: it’s for people at various levels coming together because of a shared passion, and it caters to multiple skill levels.

First Two Days - Tutorials

Before the main conference started, there were two days of tutorials at ranging from novice to advanced. I was a helper for a tutorial on Saturday and one on Sunday:

  1. Creating, Building, and Maintaining a Python Project by Titus Brown, Luiz Irber, and Camille Scott. (video here)

  2. Data Carpentry - Introduction to Python for Data Analysis and Visualization by Tracy Teal (video here Camille and Luiz were also helpers for that).

Bad wifi was a problem for both of these lessons, but overall they went well.

Here’s a picture of the dream team, Luiz, Camille, and Titus, for your enjoyment.

Exploring Portland

Of course, I did the touristy thing and checked out Powell’s Books and only bought three books.

I bought some beautiful artwork from What If Creations from the Saturday market. The purrmaid really spoke to my soul.

At the same market, I saw Fleeting States’ booth. She makes artwork using equations relevant to the subject. Super neat!

I also managed to fit in some swing dancing on Sunday night, and I’m happy to report that Portland lindy hoppers are very friendly and welcoming.

Here are some of my favorite talks I attended (althought there are a few I still plan on watching on YouTube.

  • Git: a peek under the hood by Clara Bennett - This clarified a few concepts for me, and it was interesting to see this method of teaching git. Plus, there are emojis in the slide notes!

  • A Beginner’s Guide to Deep Learning by Irene Chen - This was an AWESOME talk. Irene used a great avocado metaphor for a problem solvable by machine learning (given enough data on the color and squishy-ness of enough avocados, can we determine if an avocado is ripe?), and it’s worth watching just to see how the material was presented. Slides here

  • Bake the Cookies, Wear the Dress: Connecting with Confident Authenticity by Adrienne Lowe - A great talk about being confident in yourself and going against sometimes bad advice. My favorite part was when Adrienne talked about giving her first talk at a PyTennessee and feeling nervous because she was actively documenting her learning process on her blog, https://codingwithkniv.es/- that felt very relatable to me!

  • Machete-mode debugging: Hacking your way out of a tight spot by Ned Batchelder - This was also well presented. I don’t do much heavy Python debugging, but this was an interesting glimpse into that world. Slides and awesome documentation are here.

  • Statistics for Hackers by Jake Vanderplas - This has a deep Dr. Seuss metaphor through the situation examples, which is impressive in itself. Also, this was a good overview of several statistics concepts, and I am always happy to learn more about that. Slides here.

And some noteable lightning talks -

  • Terian Koscik gave a talk on how to create twitter bots that do funny things. Please at least check out how great this website layout is http://www.pineconedoesthings.com/tweetbots.html (I miiiiiiiight be drawing inspiration from that the next time I give my blog design some love)

  • Someone gave a great talk just on python facts! As in the genus. I am pretty sure this is her.

  • Cut up haiku poetry generated by prosaic by Nate Smith. This twitterbot just tweets them.

Software Carpentry Open Space Meet Up

An Open Space is a reserved space for whatever people would like to organize, in this case Software Carpentry. Some people with questions about the organization were able to come and get information. The two questions we couldn’t help with were:

  1. Is there intermediate level teaching material I can use for people who have completed the regular material?

  2. How can I find out about the next round instructor training? The website provides insufficient information on this.

The consensus on the first question was that it is very difficult to run intermediate level workshops, especially to package them in the way that Software Carpentry has. The second question prompted an email to Software Carpentry admin, but I’m not sure what came of this.

On Being a Woman at a Tech Conference

The smaller population of women at the conference was immediately palpable, but after two days of tutorials, I felt pretty comfortable in the venue. I was extremely pleased with the social infrastructure set up by the organizers. The announcement of the Code of Conduct during the opening remarks was met with applause, and it was pretty awesome to see Lorena Barba as the first keynote speaker in front of what appeared to be a sea of the backs of mens’ heads (I know the imagery is strange- but that is what it felt like!).

And maybe PyCon passes the Bechdel test for conferences? (My tweet about Lorena is the one being referred to here.)

I really appreciate the effort that the organizers and greater community puts into making Python a comfortable environment. 40% of the talks were given by women and it was cool to see Guido van Rossum, creator/”Benevolent Dictator” of Python wear a “Python is for Girls” shirt (visible here). I wasn’t able to attend the PyLadies lunch, but I did go to the charity auction (and won a toy for the lab in the raffle!), which was full of awesome people.

It’s difficult to comment on how my gender affected affected social situations because so many factors are involved. I would say people erred slightly on the side of not striking up conversation or being overly polite when I was by myself, but I also had good conversations while flying solo. I never felt intentional friction because of my gender in social situations, so that’s a win in my book.

Thanks!!

Again thanks to Titus, and also Luiz and Camille for hanging out with me! I learned a lot, including the art of getting as many free T shirts from company booths as possible, but also a lot about the Python community and things I’ve been meaning to learn about (how machine learning works, more stats). I also learned that it is possible to run a Jupyter Notebook using Microsoft’s Azure hosting service from my cell phone, which is something I made work in order to get a free bar of chocolate.

Proof:

And of course, I gained a few laptop stickers. Isn’t that the point of going to these things, anyway?

How to set up Google Hangouts on Air for Workshop Streaming

So you want to broadcast and archive a workshop (or something else) to the Internet?

I organize a lot of training workshops for my job as a Training Coordinator in Titus Brown’s lab. Recently we’ve been broadcasting some of our workshops using Google Hangouts on Air, which streams our lesson to YouTube and saves the video on the same page.

This post is a guide on how to set up the Hangouts, along with some tips I’ve learned. I’m happy to take questions on this process as well!

Done Before the Workshop

Setting Up the Hangouts:

  1. Go to the Hangouts on Air page, click yellow “Create Hangout on Air” button. You also must make sure you have a verified YouTube account associated with the gmail account of the person hosting the hangout.

  2. Give it a name, description (optional), click starts later and specify time to start. Helpfully, the Hangout won’t automatically start at that time, you still need to press the “Go Live” button in the Hangout to start the streaming to YouTube, which you can do before or after the specified time. Also, I always overestimate the duration of the Hangout, because you can end it at any time. So for a three hour workshop I’ll set it to five hours. If you set this too short, the streaming to YouTube may stop early and that portion of the video will not be saved.

  3. Under “Audience”, delete “Public”. This would allow anyone to join your Hangout on Air call. Because we are recording lectures, we don’t want people we don’t know joining in and possibly interrupting the lesson. I put the email address of another instructor here because it will complain if that box is left blank.

  4. Click “Share”. This will take you to the Google+ page for the Hangout.

To get the links: Click “Start”, and “Skip” on the Invite Guests pop up screen (though it doesn’t hurt anything to invite people because you are not streaming at this point). In the Hangout screen, click “Links”, and this will give you relevant links for the Hangout. Our lab only uses the YouTube link here because our Hangout is private, so people can’t join from the Google+ Hangout page anyway.

To invite people: In the Hangout screen, click the “Invite People” icon at the top center of the screen. This will give you a pop up screen with the permanent sharing link. I’ve found that it is easiest to send this link to whomever you want to join the Hangout instead of messing with giving people access via email accounts.

Creating and Distributing Materials

Before the workshop, we will also make an Etherpad which allows remote sites or students in our own classroom to ask questions (and of course serves as a collaborate note taking tool/place to post code snippets). Once I have the YouTube link, I can go to that page and put the Etherpad and link to our lesson materials in the video description. I used to tweet out the link to the Etherpad with the YouTube link, but we would get spammers (I guess this is a thing?) posting text ads all over the Etherpad. It is kind of fun to locate and delete spam as it happens, but maybe not the most conducive to a learning environment.

Remote Sites

Remote classrooms have someone in charge of making sure questions get asked (or the instructor themselves) as well as several helpers.

We’ll do a tech test with remote sites to make sure that their video and audio are correctly working. You can join the actual Hangout for the workshop (nothing is recorded until you hit “go live”) or make a test one.

During the Workshop

To make the Hangout live and stream it to YouTube, click the green “Start Broadcast” button at the bottom of the Hangout screen. Before you start the broadcast, you can join and leave and invite others who join and leave the hangout as many times as you want before starting the broadcast. An important point is that you do not want to click “Stop Broadcast” before you are done. Once this is clicked, you can’t go back to streaming (to my knowledge). If this is accidentally done before the lesson is done, a new Hangout needs to be created with a new YouTube link, which is a hassle and problematic for people watching the stream.

During the stream, the creator of the Hangout can click on the lecturer’s screen to designate that it is always displayed to everyone. If this isn’t done, the screen will switch whenever another site talks into their mic. All remote sites should have their mics muted until they want to ask a question to the lecturer. Also, as the Hangout creator, you can adjust sound levels or mute mics in the “Control Room” within the Hangout window, though I rarely have a reason to do this. The lecturer must click “Share Screen” in their Hangout window.

We don’t have live chat on the YouTube video itself because the majority of people in classrooms don’t have the YouTube video on their computers, and the Etherpad has worked very well for taking questions from people.

During the stream itself, people can leave and come back to the stream without an issue. We’ve had the lecturer disconnect from the stream during a coffee break and reconnect back with no problem. The YouTube video will display any other videos on the screen. Personally I try to put a message on the screen saying we will be back either by sharing my own screen displaying text which says that, or the low-tech way of writing it on papers and displaying it to the camera.

After the Workshop

The YouTube video remains in the same spot as the stream link. I change the video from “Unlisted” (the default if you do a private Hangout, meaning only those with the link can view it) to “Public”.

I used to spend a lot of time going back and putting time stamps in video descriptions for what happens when (like this for example), but I don’t know how helpful this is to people if the lecture materials are already linked in the description.

Failure Modes

  • We unfortunately had our awesome d3.js workshop stream taught by Emily Dolson as MSU get cut off early, though the Hangout continued to work fine. This was our first live streamed workshop, and my guess about why that happened is that the length of the Hangout was automatically specified to be a shorter amount of time than the workshop. Since then, I’ve always specified that the length of stream be much longer than necessary while setting it up and this problem hasn’t occurred again. I also make sure to monitor the YouTube watch page to ensure it’s still running correctly, though if anything went wrong, all I could do is make a new Hangout and YouTube stream.
  • We have had poor internet connections result in less than stellar audio and video, or even cause an instructor to be dropped out of a stream (but they can rejoin when their connection returns!). A poor connection can also result in a blurry stream video, but it seems like the saved videos are sharper. There’s not a great solution to this besides being connected via ethernet.
  • We once had a remote site need to leave our lesson early because they were having a fire drill. Luckily, it was just a drill and they were able to finish the lesson by watching the video! Not much to prevent this problem expect maybe eliminating fires and the need for drills, which is unlikely.

Workshops we’ve one so far using this technique:

I won’t update this list here, but additional videos and future streams (including an Advanced Beginner Python from Titus and a Beginner and then Intermediate Git lesson from Daniel Chen) are posted on the DIB Training Workshop Page. As always, materials from past workshops are there as well for reference.

I hope this information is help to those wanting to stream lessons. I think this is a great tool for teaching, and I have emails from thankful people in my inbox to prove it!

Software and Data Carpentry Train the Trainers Debrief

A new crowd of *Carpentry trainers emerges

We just wrapped a Software and Data Carpentry Instructor Training taught by Greg Wilson and Ariel Rokem, with a guest appearance by Tracy Teal, at UC Davis and it went pretty well! I completed my training last year and have since taught a SWC workshop, and it was interesting to revisit the training materials after having taught a workshop (and organized many others, though not SWC affiliated).

I’m going to start out with my biggest qualm about instructor training and then talk about what I really like about it.

What to improve

Many people don’t know what to expect when entering the room at 9 am on the first day. Some people, like myself during my own training, have not previously been to a Software or Data Carpentry workshop even if they have the knowledge base to teach the material. Other people expect the training to be like a mini bootcamp on SWC materials, although it is clearly stated on the workshop page that “This is training for teaching, not technical training; you do not need any particular technical background, and we will not be teaching that”. Even with the listed schedule, I think spending a few moments on the first day reiterating that the training is focused on pedagogy and mentioning that day one is focused on theory and day two is focused on practice would give learners some grounding. I’m happy to hear opinions on this.

What was good

The instructors are fantastic and, as a result, learners are enthusiastic. It’s really informative to watch Greg use techniques mentioned in SWC recommended reading (here and here) in the classroom. To make himself familiar, Greg introduced himself to people as they arrived Monday morning even though it’s difficult to be “on” on a groggy Monday morning when most people don’t know each other. He also did a great job of dealing with distractions by quickly dismissing them using the minimal amount of attention needed to do so (seems like some techniques for teaching grade school children translate well to adult audiences!).

This workshop isn’t easy to teach. Imagine leading a discussion on common nervous ticks displayed while teaching and knowing that this encourages the class to become hyper-aware of your own uhms and errs! However, there is something powerful about the trust an instructor puts in a class while making himself or herself vulnerable in this way. Greg and Ariel did a great job of embracing this.

Tracy’s overview of Data Carpentry was well received and gave learners a good perspective on the difference between the two organizations.

The instructor training uses multiple methods to collect learners’ opinions and exemplify recommended feedback methods to use during a normal workshop. The two methods we used were Minutes Cards (given two colored sticky notes, write something you liked on the green one and something you didn’t like on the red one), and One Up One Down (go around the room, people alternate in saying something they liked or something they didn’t like while answers are recorded on the board- no repeats!). As you can imagine, these elicit different types of feedback. You can see what people liked and didn’t like here:

Positives:

Negatives:

According to the Minute Cards, more than a few people had a strongly positive response to our discussion of the Code of Conduct right before lunch on the second day. Also according to the Minute Cards, a debrief after lunch would have been helpful because of the tense nature of the discussion.

What’s new and exciting!

Something new we are tinkering with is Edthena, a potentially new way of facilitating lesson feedback. Once given credentials, people can post 2-5 minute videos of themselves teaching, and others in the same community can leave suggestions and praise as comments on the videos. We had one learner post a video of himself teaching after the first day and he received feedback from Lex Nederbragt (in a very different timezone) overnight which he could review the next day. This is still very new, but I’m excited to see if it pans out as a normal part of instructional review.

The secret best part of the Carpentries (Carpentry Carpentry?)

The best part about being involved in the *Carpentry ecosystem is the supportive community surrounding it. I’ve been lucky enough to interact with quite a few fellow SWC instructors throughout workshops hosted through my job as a Training Coordinator this year and while teaching a workshop at BIDS a few weeks ago. Although it’s difficult to convey this in a two day workshop, the awesomeness of the community was mentioned while wrapping up on the second day. I’m really excited for this new crop of people to become more involved and experience it for themselves.

A Young Padawan Teaches Her First Workshop

BIDS SWC Workshop Debrief

At 5:45 am on January 14th, I was furiously biking across Davis, CA as my train to Berkeley departed without me. Not actually a huge problem because I booked an needlessly early train in an effort to make sure I was not late because holy smokes I was nervous for this workshop. In the end, I got to the Berkeley Institute for Data Science on time and taught the Software Carpentry Unix Shell lesson. There were no flames (which… actually has been a problem for me while teaching before, but that’s a story for another day) and no one threw computers at the wall! If that’s not success, then I don’t know what is.

Previous teaching experience

I got a good amount of teaching experience while TA’ing for general chemistry at Lyman Briggs College during my last three semesters of undergrad at Michigan State.

Since completing Software Carpentry Instructor Training back in May, I’ve undertaken the position of Training Coordinator in Titus Brown’s DIB lab at UC Davis. I organize workshops, I am a helper at workshops, but I’ve never taught one, or anything computational for that matter.

How I prepped

After going through the lesson material a twice, I ended up pretending I was teaching and typing up everything I would say if I were teaching into a blank Google Doc, starting from the introduction (side note: introductions are important! I’ve made the mistake of overlooking them in the past). This had two great outcomes:

  • I was able to see how I would explain concepts while teaching and had the opportunity to review them
  • Everything I wanted to say was already in my head, and it was much easier to recall the points I wanted to make because I had already “taught” through them once.

…I may or may not have included the same bad jokes I told during the workshop.

How it went

It went well! I was very glad I went through a “pretend” lesson because when teaching it felt like I had taught this material before. Also, since I’ve only recently delved into this world I remember what it’s like to know nothing and that is useful when teaching novices.

I’m a big believer in frequent repetition of concepts while teaching at the novice level. Too often I’ve seen students in the chemistry lectures I TA’d miss an important point made by the instructor after zoning out for a moment and struggle to follow the lesson after this. Repeating concepts also allows students of various levels to refine mental models of concepts (more novice students will still be forming basic connections while more advanced students can pick up on subtleties).

And of course, the other instructors and helpers did a great job. Special thanks to Katy for answering my numerous emails about this.

What I’ll do next time (everybody loves lists!)

  1. Again, continuously reinforce connections between concepts in my teaching. Not one of the 40+ students said my teaching was repetitive in the feedback.

  2. Focus more on telling a story. Those familiar with the SWC shell lesson know that it follows Nelle, the fearless marine biologist with a problem perfect for automation using the bash shell: many files and multiple programs to run them through. I ended up skipping some Nelle parts because I was concerned about lesson pacing, but I could have illustrated the same concepts using Nelle’s data files (such as the scripting portion of the lesson, instead of using the molecule .pdb files). This would also give students a more practical idea of the shell’s power rather than me giving hypothetical examples.

  3. Have students do a little more working themselves. I ended up improvising a bit during the shell scripting lesson portion by showing a script, introducing the concept of variables in scripts, having the students work on modifying it to take in additional parameters. Students seemed engaged with this, and it is a little taste of project based learning, something I am a big fan of.

  4. Keep my relatively strict “they don’t need to know this” threshold. Because I have recently learned this material, I have a pretty good idea of what kinds of things were immediately useful to me (navigating file systems, creating directories and folders) and what I didn’t explore until later (a lot of computer theory behind why things are the way they are, multiple ways to do the same thing).

Overall I had a great experience doing this, and I look forward to more teaching in the future!

Another helpful tip: laptop stickers make a great first impression gift when going to a workshop where you don’t know anyone else.