The latest

Here’s the latest things I’ve been into:

  • Watching videos about DOTA Auto Chess
  • Watching videos about Hearthstone
  • Watching math videos
  • Thinking of strategies for DOTA Auto Chess
  • Thinking about how many powers of two will all even digits exist
  • Thinking about algorithms to split a set of numbers into two sets of equal sum
  • Playing Hearthstone
  • Playing Hearthstone with Dougster
  • Reading blog posts about Rust
  • Reading Rust RFCs
  • Building a web server for blogging in Rust with Even
  • Building a computer in Minecraft with Even
  • Teaching code
  • Supporting elders with devices
  • Playing indie games

Teaching Code

After some deep thought, I’ve realized something that’s been missing in the way I’ve taught and looked at teaching programming. I’d like to share about it so I don’t forget and so that others can learn the same lesson I did.

I realized that many coding teachers (including my past self) are only looking at half of the picture when we teach code. The half we focus on is the concepts (e.g. “what is an if statement?”). We expertly explain concepts and then we ask our students to practice using them.

The part we don’t focus on is the ability to think like a programmer; the ability to actually put abstract concepts together so that they form a complete solution to a problem.

You might imagine where this is going. For the students who pick up how to think like a programmer easily, the only thing left is the concepts, and they progress through the list of problems with ease. For the rest, it’s a struggle.

This is where the problem emerges, many teachers either don’t recognize that the difficulty is in thinking like a programmer, or do realize it, but end up doing something that makes it worse. My solution, which I’ll get to later, is duplex, to start recognizing this when it’s happening and to do something that helps.

Unfortunately, these students end up in a mix of feeling stupid and demoralized, getting shown answers without ever getting to practice thinking like a programmer, and getting progressed to harder problems even though they couldn’t solve the easier problem in the first place.

There are three ways this pattern ends:

  • The student gives up and decides that they’re not fit to code.
  • The student persists long enough for the slivers of practice to add up.
  • The student finds teachers who don’t make them feel stupid and will make sure that they get a lot of practice on the thinking part.

So that’s the question I had to ask myself, “for students who don’t know how to think like a programmer, how can I be one of those teachers?”

The thing I did for years was to make them start from a blank page and write a complete solution. If they do that, they will have practiced thinking like a programmer.

Here, the problem is that the blank page looks scary and they don’t know how to begin. If they give up and I have to show them a solution, then I’ve done all of the thinking part.

After thinking about how I learned to think like a programmer and getting the help of some friends, we came up with the idea of writing some complete code for the student, and then asking them questions to make them practice the thinking part, “what happens if I remove this?”, “Do you know how to add this small feature?”, “Can you fix the program now that I removed something important?”.

So that’s what I’ve been doing. Thus far I have taught three students with this philosophy. Without going into too much detail, I think it overall worked great and every problem we did face was better off being faced sooner than later.

Sleep

I’m excited to write this post because I’ve recently made a big step in overcoming something that I’ve struggled with for a few years.

In the past, I sometimes got into a pattern where I stayed up late every night, woke up early for school, and felt tired all day. Since I wanted to get to school on time, the place that I tried to shift things was in staying up late.

One thing I tried several times was to decide to go to bed earlier. This meant doing less each night; specifically, watching less YouTube. This eventually failed because I felt deprived and like wasn’t watching as much as I needed to, so I would stay up late catching up.

It really stunk because I often didn’t even enjoy watching the videos. I was giving up having energy the next day to spend time doing something I didn’t enjoy.

Since my phone won’t let me uninstall YouTube, another thing I tried was to hide the app so that I wouldn’t use it. This worked for a while but eventually I caved and started going into the hidden apps menu and watching YouTube anyway.

 

Recently, I was reading an online thread about bad habits people have gotten into, I found this comment that really stuck with me:

“I only stay up late to do something that I would wake up early to do. There’s very little I would wake up early for.”

Since about a week ago when I read that, I’ve hidden the YouTube app again, and now every time I look at the blank space where it used to be and wonder if I should try to get around the hidden thing and use it anyway, I stop, I ask myself if I would get up early to do it, the answer is no, and I go to sleep.

Hearthstone: I love to play it

In the past few months I have been enjoying, thinking about, and watching countless videos of Hearthstone.

I think the biggest reason I enjoy it is that I have been practicing explaining my ideas and working together on strategies with people.

Some of the games complexities include:

  • Evaluating the strengths of cards to include in decks
  • Choosing combinations of cards that work well together
  • Evaluating strategies that have a possibility of leading to a victory
  • Guessing what your opponent’s deck is
  • Guessing what your opponent has in your hand
  • Being conscious of what information you give to your opponent
  • Intentionally misleading your opponent by giving information

I don’t like that paying money for in-game cards can give an advantage. Let’s see if I end up enjoying it long enough to earn good cards.

My Favourite Words!

This will be a series of posts. Today’s word is “value”!

I value precise language and I feel excited about language that invites me to express useful communications. I’d like to tell you about some words I enjoy.

I value objectivity – in other words, I prefer when information is stated precisely and from a perspective.

I consider the statements “friendship is good”, “pineapple is disgusting”, and “you’re being annoying” to be subjective. While I consider the statements, “I love friendships”, “I don’t like pineapple”, “I’m starting to feel annoyed” to be objective.

One word I especially enjoy for this reason is “value”. Written above, “I love friendships”, can be expressed even more concisely as “I value friendships.” I believe that the kinds of communication that using the word “value” make possible can create a fast track to having deep conversations and getting to know people.

“What does a day look like?” Answered by me on 2018-10-12

I’d like to take this opportunity to list some of the things that have been in common throughout most of my schooldays.

In the mornings, I walk Charlooks, say good morning to everybody, and do two spawns (one conventional one and that I created that I’ve yet to write about).

During the daytimes, I sometimes work on our hardcore Minecraft world, help Abby learn coding, play chess, play bang, play other board games, do math with Ryan, prepare some blogs for Friday with Mel, practice by Acro-Yoga, work on my shortbow with Chuck, etc.

In the afternoons, we do the crosswords and I do my pushups.

In the evenings I walk Charlooks a couple times, watch YouTube, chat with Abby, and sometimes play games online with friends.

Minecraft World Sharing Solution

the advice in this blog was last verified in v1.13.1

I was playing Minecraft with some friends yesterday. After we had played for a while on our world, we decided to transfer the world to my computer. I’d like to share with you a problem we ran into and how I solved it.

After retrieving the world files from the minecraft saves folder. My friend sent it to me and I put it in my saves folder. Standard stuff.

We ran into a problem: when I opened the world, I had my friends stuff and spawned where they logged off. The world had remembered which player was the owner.

I realized I was going to need to edit the world files, so I booted up NBTExplorer and opened the `level.dat` file. After I deleted the `Player` tag the problem was resolved!

Hopefully this advice helps you. I’m sure I will look back at this in the future in case I forget.