Friday, December 25, 2020

How and why I co-sleep with my baby

The sleeping strategy for every baby depends on the combined needs of the baby and the parents. So, let’s start with my sleep needs:

  • I have a very hard time falling asleep; it can take me up to an hour.
  • If I sleep less than a full cycle (~3 hours), I’m more sleepy and grumpy than if I haven’t slept at all. Hence, I rarely take naps, since I’d need an hour to get to sleep and 3 hours to make it worth while.
  • If I wake up after a single sleep cycle, my mind is energized and thoughts start racing. Of course, despite what my brain thinks, I need to sleep more than 3 hours a night, so I try to not become fully awake in the middle of the night, else I might not get through a second cycle.

With that in mind, let’s go through our baby's sleep journey:

Phase 1: Our initial pre-birth plan was to have our baby sleep in a Halo Bassinest swivel sleeper. I liked that the bassinet would be right next to my bed so that I could watch her; I never had any interest in being in a separate room from her. Alas, this plan did not work for us:

  • She didn’t seem particularly happy in the bassinet. She would often roll over, resulting in a face-in-mesh situation, and she never slept that fitfully. (Correlation != causation, her inability to sleep could have just been due to being a newborn.)
  • Plus, whenever she needed to nurse, I’d have to wake up fully. I couldn’t be half awake, since then I’d risk falling asleep and letting her fall off the bed. I was miserable during those nursing sessions.

Phase 2: Seeing how sleep deprived I was, we tried an approach where I could hopefully get at least one sleep cycle in. At 10 pm, I would pump milk and give a hopefully sleepy baby over to my partner. After feeding her, she would sleep in his lap (on good nights). I would be off in the bedroom trying to get a sleep cycle in. Then at 1am, we would switch off, and I would be in charge of baby care. We got a very cheap portable bassinet that I put on top of our futon and I would snuggle up next to that. This strategy worked some nights, but I didn’t like having to pump so much and I often couldn’t fall asleep anyway since I felt too anxious from knowing my sleep time was time-limited.

Phase 3: In our next iteration, we went for full futon, full mommy care. Baby and I would both go to sleep on the futon early in the night, her in the little bassinet and me curled up next to her. When I needed to nurse, I would sit up, nurse her, then put her back in the bassinet and try to get back to sleep. I wasn’t as nervous about her falling off the bed, since the futon was lower to the ground and surrounded on most sides, so I didn’t have to be as fully awake as before. This strategy was working out better, but I was experiencing intense back pain from trying to sleep on that too-short too-firm mattress.

Phase 4: So I finally went for it: the floor mattress. I bought a mattress that would be big enough for the both of us (queen), not too high off the ground (6 inches), and not so soft that she’d suffocate (firm memory foam). No more worrying about her falling off the bed, no more needing to slap myself awake. This was a massive improvement.

Phase 5: At some point, my baby was both too large for the bassinet and too squirrely for it, so she just slept directly on the floor mattress next to me. I used my own blanket and put a separate small blanket over her. I no longer had to sit up to nurse; I could just use the side-lying nursing technique. I no longer had to be awake to nurse!

My “baby” is now 18 months old, and we still are co-sleeping on the floor mattress. I think that I actually sleep better with her now than I used to sleep on my own, so I have no particular desire to sleep train her and get her sleeping on her own. She’s also still nursing, so this is a way for her to get milk that she doesn’t get so much during the day while I’m working. I imagine one day I’ll have to move back into an adult bed, but for now, I’m loving the floor mattress!

Of course, you should consult your doctor and/or scientific research when deciding to co-sleep. There are definitely associated risks, especially with mothers who smoke or drink. (I do neither). There’s a nice write-up in Emily Oster’s Crib Sheet with some statistics.

I just wanted to share our approach since I see so little online about co-sleeping strategies. Let me know if you’ve tried something similar!

Thursday, December 17, 2020

What is “creative” coding, anyway?

At this point, I am wary whenever I hear the term “creativity” used in the domain of computer science and computer programming. Since there are so many ways to create in this world, creativity can mean different things to different people.

For example, I might look at a HackerRank coding problem to manipulate a graph structure in some way and think “I don’t want to do that, it’s not creative enough!” But to another coder, they might look at that problem and think, “Oo, interesting, what creative approaches can I use here?”

Why don’t we agree? Well, for me, my favorite way to create is to put something completely new into the world. For another coder, their favorite way may be to figure out ways to solve a problem they haven’t seen before (even if other folks have solved that problem). I might personally value novel output more than problem solving, but that is not an absolute ranking; just a personal preference.

So I suggest that we instead use specific language when attempting to describe the creativity of a particular project or curriculum:
  • Novel output: When I complete this project, will it be something that has never existed before in the world? Or will it be the same as what other learners have come up with?
  • Self expression: When I work on this project, will I have a way to express my personal values and interests? Oftentimes, self-expression goes hand-in-hand with novel output, but projects range in the spectrum of self-expression. For example, a project to come up with elevator logic likely involves less self expression than a project to design a website that rallies people around a cause dear to you.
  • Problem solving: Is it already clear how to solve the problem, or will I need to think through various approaches before I figure it out? Some coding projects may involve little problem solving, like projects to implement pseudo-code in a particular language, as they’re more about syntax memorization. Other projects involve a massive amount of problem solving, like those on Project Euler.

My hope is that thinking of creativity in terms of these aspects will help me design better coding projects, since I can actively identify what forms of creativity are over or under represented and come up with ways to make the projects more holistically creative.

I’d love to know what you think of this categorization and way of thinking.

Tuesday, December 15, 2020

The harms of assuming cultural knowledge in coding assignments

I love using computers to re-create real world objects, like coding a simulation of a plant growing or making a 3d animation of a lava lamp. I can rarely capture the beautiful complexity of a non-digital object, but I sure can have a good time trying! So when I come up with assignments for programming courses, many of them ask learners to program a simplified version of some IRL object, game, or situation. My hope is that the programming assignment is more interesting to learners because of its connection with the world around them.

For example, in the Khan Academy Intro to JS course, one of the projects asks learners to create a Magic 8-Ball to practice their understanding of randomness and conditionals. I have fond memories of Magic 8-balls from my youth, asking them seemingly very important questions and shaking them to gain insight into the machinations of the universe.

But then I got feedback that many learners had no idea what a Magic 8-ball was. That’s when it dawned on me: those toys were popular in my youth in upstate New York, but they never became popular in most non-US countries, and they’re not particularly popular these days even in the US.

So I was asking learners to re-create something they had never seen, and I wasn’t even explaining very well what it was! So I quickly modified the project to start off with a description of the toy and that reduced the number of confused help requests from learners.

Ideally, I would even replace the project with one that felt culturally relevant to more people. However, it is hard to come up with projects that are culturally relevant to everyone, since we all come from so many different cultures.

In a course that serves a global audience, one approach is to always offer a variety of projects, allowing learners to work on the project that most appeals to them. Our Hour of Drawing with Code on Khan Academy ends with three different projects- creating a wild animal, a super snowman, or a self-portrait. When I analyzed the data a few years ago, I found that learners were roughly equally picking each of the projects, so I’ve left all the projects in instead of trying to force the most popular project on everyone.

Another risk of culturally dependent assignments is that they can cause a learner to question whether they belong. For example, I’m currently working my way through a programming course where the biggest project is a violent tower defense game. I do find it fun to make some kinds of games, but I hated working on that project as it reminded me of my least favorite use of coding and made me wonder if I was the only one that wasn’t into implementing death matches in code. Fortunately, I’ve been in coding long enough to know that indeed, programming is used for many non-violent applications as well.

But if that was my very first intro to programming, I would have many questions as to what industry I was entering and whether I would find folks with similar hobbies and values as me.

So when I create new assignments in the future, these are my goals:
  • If I reference a particular cultural object, I will not assume the learner has prior experience with the object and will provide background knowledge. For example, if an assignment asks learners to implement a game of Poker, I would need to fully explain the rules of Poker. A programming assignment already requires the cognitive load of the programming techniques; it shouldn’t also require the cognitive load of understanding someone else’s culture.
  • The assignments should reflect the varied cultures of the learners as much as possible. It follows from that goal that I need to learn about the cultures of the learners (as they may be increasingly different from me, as I get older) and that the assignments are subject to change over time (as cultures change).
  • If an assignment relies heavily on a particular cultural interest, such as card games or Disney movies, there should be an alternate assignment available as well. If one set of learners gets to program something that’s highly interesting to them, then the remaining learners should have that opportunity as well.

Those are my current thoughts. I’d love to hear yours!