What I learned from the engineers on the Blockly open source project

It's Computer Science Education Week and I am really glad to see how much it has grown over the years. I expect this year, more people will become aware of the benefits of computer science and how learning to program provides you with powerful tools to create and innovate than in any year prior. If you haven't tried the Hour of Code I highly encourage you to check it out. The ability to program transformed what I was able to do in my classroom and has opened up many opportunities in all areas of my life.

In my last post, I shared my brother's story about how a Computer Science MOOC opened up a new world of exciting projects and ideas for him so now I'd like to reflect on one of the projects I've been working on for the last few months. I already know a bit of computer science, I've learned how from books and tutorials over the years. Nevertheless, no matter how much I learned, it never seemed like I was getting any closer to developing the kind of software professional engineers create. I had access to all of the same resources the professional have but I just could not figure out how to cross this chasm and write more complex programs.

I became much more painfully aware of this issue at Google where I am surrounded by experts in computer science. I realized there was something that was missing, and our team's technical manager told me I needed code reviews, the feedback and guidance one receives when someone more experienced looks at your code. He suggested I join an open source project.

It just so happens that I sit next to +Neil Fraser (blog/tutorials) and +Ellen Spertus (Mills College Faculty Page) who work on +Blockly (Google Code page, demos) and before that App Inventor. Over the next few months, through their kind, helpful, and specific feedback; I was able to build on what they had developed. It is one thing to read about a topic but actually using version control, following style guides, and following the DRY principle taught me lessons that books and tutorials alone never could.

Their willingness to help me improve as a programmer motivated me to learn quickly so I didn't squander their time and mentoring on simple syntax/logical errors (always run the linter!). After improving the readability of my code, I was able to implement additional features and it was so satisfying every time they replied with an LGTM. Not one of my code reviews was accepted the first or second time which tells you:  I still have a lot to learn, Neil and Ellen maintain a high standard of code quality, and that they were both very patient. Code reviews are an incredible way to grow as a developer and as long as you follow Ellen's advice to, "check your ego at the door", you will learn a lot.

I've pointed out the benefits of feedback and refinement for students over the years but I was unprepared for how much and how quickly my programming skills would improve. I am all the more convinced that anyone who is interested in learning how to do something really well cannot learn in isolation. A mentoring/feedback loop is essential to continue growing.

Software developers are always learning new technologies, languages, APIs, quirks, idoms, and styles all the time. Even after all that, things never work like they should, and debugging takes just as much, if not much much more of your time as writing the original code. To be a software engineer is to be very cognizant of how one learns best, where to find answers to abstract questions, and troubleshooting mysterious issues. I am humbled to have worked with both of them, and in general I am inspired by how willing engineers at Google are at helping one another (provided you have done everything you can to figure it out for yourself).

Based on my experience, I would highly recommend joining an Open Source project:
  1. You will learn more than you ever could just from reading books or taking classes. It's a great way to put into practice what you are learning.
  2. There is a great deal of satisfaction in supporting a community/project that has a laudable goal.

I've been told that not all open source projects are created equal so if you are looking to join one, here are a couple of tips:
  1. Find one you care about. You may end up spending a lot of time on the project so pick one you find worth supporting with your time and effort. There are no shortage of projects out there so whether you pick one because of it's purpose, the programming language it's written in, or whatever else, make sure you have some good reason so you are willing to stick with it.
  2. Are you going to learn from it? Look at the code repository, can you tell what the code does, is it readable? Do they follow a style guide? I was working with two experts in computer science at Google so your results may vary. If you are not going to get valuable feedback then you will not learn as much as you could.
  3. Test the waters. Submit a small patch and see what their feedback is. While personality types differ and some can be more snarky than others, a code review should not be a disheartening experience, feel free to join a more appreciative project if you feel like you're being treated poorly.
  4. Supporting a project does not have to involve writing code, Blockly and other projects are always looking for translators, documentation, etc and you can commit as much time as you have to offer.
I love that no matter how much I learn, there is more to discover and improve one's skills/knowledge. I hope you will take this perspective into the new year and model it for your students.

My Brother's Experience with the edX Computer Science MOOC

Everyone has a unique story to share with regards to learning. It's a lifelong journey that rarely looks like we would expect it to. With my brother's permission, I wanted to share with you a little about my brother Mike's educational experience and how a MOOC made a huge impact on his life.

The following represents the views of my brother with occasional commentary added by me. None of this necessarily expresses the views of my employer or colleagues.

Formal Schooling

Background: My brother and I are very similar but couldn't be more different. He grew up struggling all through school while I chose to "play the game" as my mom called it. I chose to study science and math, where he focused on music and art. While many struggle to find work in the arts, he is lucky enough to tour the world playing music.

Phil: Can you share about your learning experience when you were in school?

Mike: It's hard for me to pinpoint exactly what the cause of my resentment for the educational system stemmed from when I was younger. There were many outside influences that acted upon me and surely had their own respective consequences. As our father is a cinematographer (blog), I had seen the world from the traveling circus mentality and was under the impression that I could lead a full and successful life without any formal schooling.

I recall when I was in second grade, we moved to Vancouver, British Columbia and subsequently went to school there for that period. The system they had in place at that school had the second graders in the same classroom as the third graders. This put me ahead of the learning curve when I eventually returned home to our school in America. I became immensely bored and unchallenged with the material presented to me, and as Jurassic Park had just come out in the theaters, I became obsessed with the works of Michael Crichton and began to read his entire catalogue. I won't pretend that I understood everything he wrote, because much of his stories deal with complex ideas and science, however in this way I began my journey of self-reliant learning.

As the years went on, I continued on with the mentality that school was a tedious exercise of frivolous trivia and acted accordingly. That isn't to say that I was still unchallenged by the material presented to me, on the contrary actually. I fell far behind and by the grace of kind and understanding teachers was coddled and gently prodded to pass classes. I grew frustrated with the books assigned in English classes and would prefer to read my own diverse selections, often in class, to the chagrin of my teachers. I remember being scolded for this, and I would reply, "this is an English class, wouldn't you prefer I read, rather than listen to your opinions?".

Phil: What did you think about math and science back then?

Mike: Math was always a challenge for me and it seemed trivial and obtuse. I needed some sort of tangible way to relate to the material which, by either my frustration or the style of teaching presented to me, I could not find. I adopted the mentality, learned no doubt from a punk rock song, that if I never tried, I couldn't fail. Clearly this logic was flawed, because I consistently failed my math classes. Science, on the other hand, fascinated me, and I worked hard to navigate my way through the lectures and textbooks. I was, however, constantly undercut by the formulas and would end up squeaking by.

The MOOC Experience

Background: Almost a year ago, my brother and I were talking at Thanksgiving and he mentioned he was thinking about learning how to program. A few months later, he calls me up and asks me for some help with a programming challenge. After hearing a little of the code he was wrangling with I said, "Wait this sounds like C?" After hearing his reasoning for preferring C to other languages he had tried, I could tell that my brother was getting serious about learning how to program.

A few months later he told me he signed up for the edX 6.00x Introduction to Computer Science MOOC. He and I had some wonderful conversations over the following months. I would receive a phone call almost every week, then every day. These conversations could last for a few minutes or a couple of hours. My advice would always end with, take a break, take a walk, and write some pseudocode. After a while I would get an email every couple of weeks if at all, and when he did call, the conversations had shifted from tutoring to discussion and feedback. From my perspective, he was quickly picking up the terminology and the skills.

Phil: Why did you decide to sign up for the edX Intro to CS course?

Mike: I have always had a strong desire to understand what makes things work. I often would take apart my toys and gadgets to understand their cogs and mechanics. Computers have always interested me and the fact that I couldn't justifiably open one up or see its underpinnings bothered me, especially because of their intrinsic nature in our society. On a whim, I began teaching myself the basics of C and then upon your recommendation, Processing, but was still longing to learn more.

As a touring musician, I have, should I choose not to spend it in the thrall of a drunken stupor or the following hangover, an inordinate amount of free time and I made a conscious effort to utilize it to the fullest. The drummer in my band, who has also dabbled with programming since studying CS in college, had told me about the edX course MIT was offering on the Python language and I decided to sign up for it, even though it had already started a week prior. I felt that with the support of a friend in the class as well, I could possibly pull it off, even with the distractions of tour-life.

Phil: Why a class on computer science / Python?

Mike: As I stated before, the subject matter was very interesting to me, but beyond that, I felt that with enough time and dedication I could begin to earn an income from coding and possibly even supplement my income while I was on the road. After much time and consideration, I see how lofty an ambition this was, especially without a formal education in the subject, but I have always had perseverant spirit, and work towards this goal with daily strides and small victories. The more I learned about Python, the more I liked what it stands for. Aside from being a huge Monty Python fan, I really admire the Pythonic ideals and its desire to be readable. I am constantly amazed at how powerful this language can be.

Phil: What worked for you in this class / what did you do to succeed?

Mike: I feel that the weekly deadlines and set course schedule helped promote the stability and drive I needed to succeed. I was constantly pushing myself to get assignments in on time or in the few cases where I would finish early, reward myself with some hang-time with the band. The forums were a reliable source for help and a sounding board for ideas, examples, venting, site issues, and most importantly, interaction with peers and TAs. In my darkest hours, when no solutions seemed available, I leaned heavily on you, Phil. I am very grateful for your kind insistence and guidance, never giving me the answers directly but helping me to find them on my own. I think having someone to discuss coding with or problem solving in general, without fear of judgement, has been immensely beneficial to my learning experience.

Note: I emphasized the previous point, because I know how this type of pedagogy has helped students who often struggle with school.  The best part is, they end up understanding it better than those who absorb it via other means.

Phil: In general how do you learn something new (e.g. new software, new instrument, etc)?

Mike: By exposing myself to this constant stream of information over the past few years, I've come to learn a great deal about how I absorb content. Typically for me, I learn best the old fashioned way - empirically. When learning a new instrument, I would practice constantly, consuming books on scales, patterns and theory until eventually it would all click. Now, 'eventually' is a nice way of saying a really long time, because I'm still in the process of growing, and it is my belief that when you stop striving to get better, you stop being an artist. I have directly applied that philosophy to coding.

It starts with reading, and although my whole life I've been an avid fiction reader, I am now consistently in the middle of several technical books at any given time (right now the subjects are: Python, open-source, Django, problem solving, Java, and Vim). I am also concurrently taking a few casually paced MOOCs which keep me pretty busy all the time. I have been blessed to have all the downtime that being a musician has afforded me and am so grateful to my fiancé for giving me the support and pep talks, without which, I could never have come this far. As I traverse new paths, I know I must be carefully aware of where I've been and to consistently apply what I've already learned. I like to analogize it with the old expression - If you don't use it, you lose it.

Note: My entire family have benefited from this method of learning new things, and I've captured some ideas about this in How to Learn Anything - Lessons in Neuroscience from Dad.

Phil: What did you like about the course and the environment?

Mike: Once I started with the lectures, I was immediately drawn to Professor Grimson's assured and kind demeanor. His style of teaching and the simple ways he had of breaking down complex ideas such as recursion were very comforting, considering the stress the weekly class assignments had on me. Having now taken courses on other MOOC platforms, I have a greater appreciation for the layout and format of edX. First off, I've always been attracted to clean design, and the website and information presented never felt cluttered. Everything was always easily accessible. The Python interpreter they used for quizzes and assignments has a simple interface and gives back informative tracebacks and error messages, which were very helpful in debugging my flawed code.

6.00x definitely felt very organized in a way that I haven't experienced with any other MOOC yet.

Phil: What didn't work for you? What could have been improved about the course?

Mike: The few bugs that would pop up occasionally, would quickly be addressed in the forum and corrected. There was one time that the grader for a assignment became so overloaded that it crashed the system. They kindly gave us another day to turn in our assignments, "and there was much rejoicing". In hindsight, and though I understand their reasons for doing so, I wish they would have taught us to program in Terminal instead of using a GUI like Enthought EPD. I feel like this would have made my skills more translatable to the real world. It is a very user friendly interpreter however, and gives the user instant gratification and comforts galore, especially when it came to plotting graphs with pylab.

Now I have begun weening myself off of Enthought and am doing my best to become one with the way of the Terminal and Vim (I am writing this on it right now).

Phil: Why didn't you give up?

Mike: It would have been very easy to, actually. My friend who had joined the class with me ended up dropping it, due to the restrictions it imposed on his lifestyle. Everyday it was a constant effort to continue and keep prodding through. In order to make the time necessary to complete the course, I imposed a strict regimen on my daily life. I would wake at 6AM every morning (much to the annoyance of everyone who had to hear me snoozing or not hearing my alarm for an hour) and then make a pot of coffee, all while the tourbus was still rolling to the next city.

Then I would listen to lectures and work on the quizzes till my brain was sufficiently fried, and by that time we would hopefully have arrived at our destination where I would proceed to take a much needed head-clearing walk through town. After soundcheck I would sneak in some more time at the computer till it was time to play the show, and after the show (and after several drinks had been consumed) I would work in my bunk till the wee hours of the morning only to repeat again the next day. This was my life. I felt like I was isolating myself from my friends and they would constantly remark with amazement at my will to continue on in this way.

When I was home, there were many times when I would say goodnight to my fiancé, only for her to wake up for work the next morning and see me in the exact same place. There was one time, I recall, where I didn't sleep for three days from being completely consumed by an assignment. She couldn't believe it and she coerced me into taking a much needed break, whereupon I returned and found a solution shortly thereafter. I quickly learned the value of stepping away from a problem. In many respects, I think that having everyone constantly seeing me endure this lifestyle gave me a certain gratification. I think they were a bit perplexed at why I would put myself through this and ultimately, to answer you question in my very long-winded fashion - the reason I continued on was the amazing satisfaction and pride I would feel when a program would run without error or when I would solve a problem, after countless efforts, only to find the simplest answer coming from changing the way I looked at the problem.

Phil: Do you feel like you understand the topics taught well enough to teach them to someone else?

Mike: Yes and no; I feel there are many things that I have learned repeatedly enough, that are intrinsic and fundamental to all coding languages, which I could easily teach to others and find useful anecdotes for. There are many concepts, however, that I struggled with and continue to struggle with daily. While I can explain recursion in theory, finding practical applications where I use it properly is another story. Other concepts that I find myself struggling with still, and perhaps through lack off consistent application are: search algorithms, pylab graphing and statistical analysis. I really did enjoy learning about Random walks and Monte Carlo Simulations, though.

Phil: In addition to Python skills, what other skills did you gain?

Mike: For me, there is nothing comparable to the "shout from mountaintop" feeling I get from programming. Of course, there are countless hours of frustration and study, but I believe that only makes the rewards that much more cathartic. Music has always been a great joy and outlet for me, but as a constantly self-critiquing artist, it's hard to find the same true moments of reward. Now with that being said, most times after the brief moments of cathartic splendor, there is still much more testing/debugging/implementation to be done but it's nice to know that there are always those lights at the end of the tunnel. Thats what makes coding so exciting for me.

I think of all the tools I've learned in the class, the most valuable to me are the self-reliance and realization that math does not have to be an obtuse and highfalutin rite of passage as I once considered it to be. Instead I see math as a tangible and often exciting way to solve problems and extend the possibilities of our world. I did learn a great deal of debugging tools, such as: black box, glass box, using edge cases and running tests, though I've extended that learning considerably with Peter Norvig's use of assert statements in his Design of Computer Programs course on Udacity.

I've absorbed many algorithms, discovered the world of Object Oriented Programming, used memoization and hashing to optimize designs, and learned big O notation just to name a few. It was a lot to take in all at once, to be honest, but I feel that the pressure and constant application made me retain a great deal more than I would have expected.

Phil: What advice would you give someone else thinking about taking a course like this and those who are frustrated?

Mike: I would tell them to make sure they set aside enough time to really do justice to the material. Honestly, there were many times when I felt like giving up and just going back to bed with my fiancé or going out to party with my band. I won't pretend to be any sort of genius because I finished this course, it was a combination of sheer will-power and the understanding and support from my family and friends who propped me up when I was literally exhausted and through. I began to realize that taking breaks wasn't giving in, but allowing the mind to wander and explore more possibilities than a screen filled with code and error messages can provide (emphasis by Phil).

I believe that anyone who sticks with it, through the pain and mind-numbing frustration the intensity this course can provide, will succeed. Use the forums, they are your allies, reach out to friends who are willing to lend an ear or put up with some occasional venting, and definitely get the book the class follows. They lead you to believe that you don't need it, and they do provide an online version (I didn't buy it until halfway through the class), but for me it was so much better to have the book to follow along with in my Kindle.

Phil: Did your experience as a musician play a role in your ability to learn in this course?

Mike: I have always thought about music in numbers, and for someone who was as bad at math as I considered myself to be, that system works very well for me. I realized during a class on Orchestration that I was adept and quick at making transpositions because of this system, and it still proves very useful to me when reading full scores or changing keys on the fly. When I was younger and teaching myself different instruments, I would work at it day and night and was obsessed with everything I could hear. I think that same passion to learn has helped me with this class and programming in general.

I would definitely say I'm obsessed, and though I'm not yet the hacker I long to be, it has helped redefine the way I see the world. I think in code, I look for solutions to problems and enjoy the process of learning and challenging myself. It's hard to say whether being on tour while taking this class helped or hurt me, but however difficult, stressful, and painful it could be, upon reflection it was one of the most rewarding things I have ever done and I wouldn't change it. I'd like to think it has made me a better man.

Phil's final thoughts: The transformation I saw in my brother was amazing. It's difficult to convey how big an impact this has had on his life. I had not seen him apply himself this much except with music and now he can't stop studying CS. It's worth mentioning that throughout his educational career, many teachers expressed their concerns about Mike's study habits and grades and yet about a decade after high school he is studying complex technical subjects. With all of the criticisms about MOOCs, we should not discard experiences that make a huge impact on people like my brother.

I just want to thank my brother for sharing his experience with me and allowing me to publish it here. I could not be more proud of his work and what he accomplished and learned!

Science vs The Bible: A Study in Conflation

Science and the Bible are at odds. Intelligence or faith, you have to choose. That's what we've been told. It's not true. Why am I posting this here on an education blog? I don't want anyone, student or educator, to feel like if they are studying or working in STEM, that they cannot also be a person of faith (and vice versa). Since many present this as a two sided issue, I wanted to share my perspective.

When I first became a Christian I found myself surrounded by people who, upon finding I was studying science, wanted to tell me how to harmonize the Bible with science. I spent the first few years of my faith, reading all of the apologetics and resources I could find in hopes of understanding how the Bible would be compatible with my knowledge of science and math.

Some of these resources were interesting and enlightening but many raised more questions and issues than they solved. Worse yet, many were attempting to discredit evolution and the like because of the perceived incompatibility with the Bible. It was very frustrating because I felt that the Christian community was forcing me to choose what I observed to be true about the universe and what I believed to be true about God.

Sadly, this black and white belief is also reflected by many prominent voices in the science community. Making claims like, "if evolution is true then there can be no God" is an untestable statement and is just as much a belief system as any religion.

The problem with this either/or debate is it leads to unnecessary confusion and frustration. Is the Bible made obsolete by modern theories and discoveries? Can one apply the same intelligence to their faith that they do to their work and other aspects of their lives? I believe it is possible and God's will that we be able to fully use our minds to learn more about the Universe while using that same mind to deepen our understanding and relationship with Him.

Science: An cumulative progression or a series of paradigm shifts?
Textbooks and many historical narratives send the message that science has been a cumulative effort where each previous theory and law builds on the previous. If you consider the stories of Copernicus, Galileo, Newton and Einstein as an example, each proposed a new theory that was not initially well received within scientific circles. Their detractors were opposed not always based on evidence, as some would have you believe, but because it conflicted with their worldview and paradigm.

These scientists, as well as Darwin, Crick, and many more in the scientific community continued to have skeptics and detractors long after the theory was confirmed by data and evidence. One day, I stumbled upon the word "conflation" which I found to be very useful in this situation. Conflation is where you take your personal beliefs (e.g. that the world is only a few thousand years old, or that there is no God) and combine them with the Bible or the theory of Evolution to make them say something they were not intended to say. In hermeneutics, the study of texts like the Bible, this is known as eisegesis and one must constantly be on guard against it. If one is to read a text, they must understand what assumptions and worldview they are bringing to it.

The problem is well meaning and passionate people on both sides of this supposed debate are trying to "save your mind and soul" when they don't realize, or refuse to acknowledge, that they have an "-ism" or a worldview as much as anyone else. You may think it was Galileo vs the church but it was much more about politics and cherished philosophies left over from Aristotle. It's been said that Christians have always opposed evolution and that scientists have always embraced it. Neither are true and it has led to misleading representation about what the theory of evolution actually is (as well as what a "theory" is for that matter).

If you were writing the book of Genesis for the Jews a couple thousand years ago, what do you think would be the most useful message to them? Remember they were just rescued from slavery in Egypt and are wandering in the wilderness. The writer of Genesis was inspired to write a message about God and creation that explained why God was different than the other gods they had seen in Egypt and would encounter from other nations. The story told in Genesis 1-3 (creation) and 5-9 (Noah and the flood) is not intended to be a literal account of the geological and biological events that took place in the early days of the Earth. A scientific explanation would not have had much value to the aforementioned Jews in their situation. Throughout these narratives and the Bible as a whole, God describes his love for us and why we need salvation. As Galileo, quoting Caesar Baronius, put it famously in his letter to the Grand Duchess of Tuscany, "The intention of the Holy Ghost is to teach us how one goes to heaven. not how heaven goes."

This post could be miles long, but I feel you will get more value if you check out some of these books:
  • The Structure of Scientific Revolutions - Thomas Kuhn: As mentioned above this is where the term "paradigm shift" is coined and it is an excellent tour through the history of science with examples of how evidence required a complete change in how we perceive the universe rather than an cumulative progression as textbooks would have us believe.
  • Personal Knowledge - Michael Polanyi: Everyone has a belief system and worldview and it is impossible for one to be 100% objective. Experiments are reproducible, their implications are open to interpretation.
  • Galileo Connection - Charles E. Hummel: If you have the understanding that the Bible is incompatible with science, then you may find this book useful. It clarifies the role of Scripture and nature in understanding God and the universe. It also provides an excellent perspective on the politics and disagreements that led to Gailieo being forced to recant his scientific findings.
  • The Blind Watchmaker - Richard Dawkins: This book, among others, helped me to better understand the topic of emergent complexity and how very simple rules can lead to diverse behavior. Dawkins is also an interesting read, as a self proclaimed "militant atheist" you will see an example of how a brilliant scientist can see the same data and evidence as others but interpret it differently based on one's own personal belief system.
  • Perspectives on an Evolving Creation - Keith B. Miller et al.: A series of articles from Christians who are also scientists on how the we have been misled to believe that one cannot be a scientist and a Christian.
  • Galileo's letter to the Grand Duchess Christina of Tuscany - Galileo was a devout and pious Christian which is why he was so confused and frustrated by those in the Church who opposed his discoveries on theological grounds. In this letter, he describes his faith and how that lives in harmony with his scientific pursuits, his belief that his accusers in the Church were misunderstanding the passages from the Bible and its role, and the role of the natural world in declaring the glory of God.

If you have a strong opinion on this topic, how much of it is based on evidence and how much based on your own personal belief system.? Regardless of your position on the issue, I have always found it helpful to hear other perspectives. I am glad that science is an endeavor I can continue to pursue while maintaining a faith in God. My hope is you will also find harmony on this topic and realize that a universe with evolution, a big bang, or whatever else we discover, are not barriers to understanding God's existence and love (Ps 19:1).

Suited for the Thirsty

The following is a guest post from +Patrick Yurick

Myles Horton & Paulo Freire at the Highlander School

“The people wanted and needed to read and to write, precisely in order to have more of a possibility to be themselves... Because of that, you could start without too much preoccupation concerning methods and techniques and materials because you had the principle ingredient, which was the desire of the people...”

Paulo Freire - 1990

I remember reading that book during my first education course at Plymouth State University seven years ago as I started my path towards becoming an educator. I was completely enamored with the tone of revolutionary thinking involved in educating people who desperately needed education. I did not fully understand the irony, at the time, of studying countercultural education during a government mandated credentialing program.

It was soon after Freire's words, and my subsequent blog writings and experimentation with emerging communications technology, that I found myself working at one of the most revolutionary educational environments in the world, High Tech High Chula Vista. I spent five years at HTHCV developing collaborative projects and assessments with over 750 students. The campus brought me in as a college graduate and raised me to be an educator.

Still, Freire’s words above kept ringing in the back of my head. Why weren’t my students universally happy? Why did they care about grades when I was giving them literacy?
Every semester I saw dozens of students who were being pressured to attend school by their parents and society consistently “check out” of their educational experience. Subsequently, I saw them performing miserably in my class setting. No matter what I did as an educator, I could not reach every student.

“...the oppressed, who have adapted to the structure of domination in which they are immersed, and have become resigned to it are inhibited from waging the struggle for freedom so long as they feel incapable of running the risks it requires.”
Paulo Friere - 1968
Pedagogy of the Oppressed

There was an environment where I witnessed the active fostering of desire derived: an after-school program called the “High Tech High Graphic Novel Project”. Populated with students from all grade levels at HTHCV, with a desire for comic/art education, and selected based on choice, I began to see the educational environment Friere spoke of. We would stay for all-nighters, weekend classes, and go to conventions. Parents were involved and would regularly attend sessions to help. Outsiders wanted “in” as well and the students saw a slew of professionals come to donate time just because they had heard about what we were doing.

Victor Flores, now a Freshman at Cogswell University, 
brush inking a page of comic book artwork.

The 2011 Graphic Novel Project team presenting, as experts, 
on a panel at San Diego Comic Con International 2011.

Since the formation of HTH GNP, my principal’s mid-year evaluation would always have this part included: “What you are doing with Graphic Novel Project is amazing. How do we bring it into your classroom?” How could we bring mixed age-level classes into the classroom? How could we create an educational environment based on choice, passion, and commitment? I would always tell my director that unless we can restructure everything that school thinks it is about -- we can’t. At some point, people started going to school because it was expected of them as opposed to wanting education.

Learning and education became a hopeful byproduct of schooling as opposed to the point. School is about so much more than just education. Cultural requirements like proms, rites of passage, teams, theater, community are not bad! In fact, they seem to be vital to the human experience. It was when school stopped being about a pointed educational environment for the student that it lost its ability to be effective at education as an endeavor. School became about too many things, resulting in the gradual diminishment of all the things it was attempting to serve.

Students selling their comics at 
Wondercon Anaheim 2012

Students working on a collaborative comic during a 24 hour work session, during school vacation time

Student creating STEM comic books at the USA Science & Engineering Festival in Washington DC

A little over a year ago, the core students in GNP happened to be in the same graduating class and subsequently were all leaving the school at the same time. I had two options: 1) I could continue the Graphic Novel Project and recruit a new roster of workers or 2) I could do something else. I chose something else. Even though I was given incredible freedom to experiment as an educator, I felt that the constraints of working within a system with large numbers of students, grade levels, and bell schedules still constricted the likelihood of a pointed educational environment. I chose something else because creating a new, pointed educational environment was the only option I had if I was going to test my theories about the reasons why GNP was so successful.

I wanted making comics and teaching to passionate learners to become my full-time job and that meant leaving the standardized education system in all of its forms (including beloved charter schools). In the next incarnation of my educational journey, I had to abandon that idea of school.

I have seen the power of calling yourself an artist. People react differently to artists. They equally criticize and revere them, and I believe that is because they cannot seem to define them. Where do artists work? In “art studios.” What were we going to concentrate on? Comic books. Thus we knew “Comic Book Studio” was going to be in our name. The last piece of what we were was defining what we were about. When we read the Leo Leonni book Swimmy we knew our name: Little Fish Comic Book Studio.

                                                         Little Fish Comic Book Studio launch party Friday August 31 2012

Teaching comic book theory at 
Little Fish Comic Book Studio

An all ages created comic book mural led by Little Fish for San Diego’s Figment 2013

Little Fish members/students range from 
11-40. Each come in with a comic project 
they dream of finishing.

I am sitting in my comic book studio a year later looking over at the members who are attending Little Fish. I am tempted to call them students, but they are more than that - they are creators. A 30-year-old who joined to work on his 150-page autobiography, two 14-year-olds who are launching weekly webcomics, an 11-year-old who loves manga but is just starting out, and an early 20-something who has been publishing but is looking to push his work to the next level. They are all making jokes about comics and movies that are coming out soon. You can hear the scratching of pens on paper as they are looking down at the concept art that they are designing for their individual projects.

They are here because they want to make comic books. They want to learn and they passionately have stories to tell. Each conversation is outlined with this implied expectation that they each share: “We are all brilliant. We all need each other in this moment to continue our journey.”

In the short seven years since I have read the line: “The people wanted and needed to read and to write, precisely in order to have more of a possibility to be themselves” and I am seeing it before my eyes. When I first read it, I was inspired, but also thought that if Friere tried to teach my students it probably wouldn't occur now because the system will not allow it.

MYLES: ...you can lead a horse to water but you can't make him drink.
MYLES: This is a problem they deal with in academia by hitting the horse over the head and beating on him till they force his nose in the tub, and just to keep the blows from continuing, he'll try to drink.     My system is to make him thirsty, so he'll volunteer to drink.
Myles Horton & Paulo Friere - 1990

As I sit in my studio and work with the people who have come to be a part of it, I can’t help but think of the interaction between Horton & Freire above. The creation of Little Fish may have been a fool’s gesture, but I think it was a necessary one. What if educational environments were pointedly suited for the thirsty? What would a place look like if the common denominator between all people was just how much they wanted to be taught? Who would show up? I’d like to think that I would.

Patrick hosts monthly comic book & education related hangouts, free classes, resources, and more at Little Fish Comic Book Studio Website: www.lilfish.us

To see more of the kinds of work Patrick has done as an educator check his portfolio/website: theheadcomic.com

Patrick’s webcomic “American BOOOM!” at American.BOOOM.us which uses a superhero story to talk about the ongoing narrative of the US/Mexican Border.

My favorite learning environment would fail today's education technology standards

I want to tell you about one of my favorite ways to learn new things:
  • It is essentially a lecture, I'm not able to ask questions or get clarification from it, I just sit there in my chair for hour after hour. 
  • Occasionally it is available online, but this option is relatively new, nonetheless I am able to access it from anywhere. 
  • It doesn't cost much money and I often get myself involved in at least 2 at a time. There's rarely an extrinsic motivation for me to learn this way but yet I have a pretty high completion rate.

If you haven't guessed by now, I'm talking about books. However, these talking points (and many more) have been raised in support/derision of MOOCs. You know, those Massive Open Online Courses everyone is talking about. Its funny to me that people are not raising the same issues about books that they are about education technology. The number of kids turned off to education by bad pedagogy using books is likely far greater than those who have not completed a MOOC. Yet everyone is coming out strongly for or against the idea of MOOCs. I guess books have just been around longer.

Now about completion rates, a physical classroom has a monopoly on your time. Say you signed up for: Physics 101 for 3 days a week / 1.5 hours a day (plus homework) at your local university. You have likely paid for this class and your ability to get a degree and potentially a job requires that you pass the class. You have a lot of extrinsic motivation and perhaps an equal amount of intrinsic motivation (because Physics is awesome).

MOOCs have a few things working against it. You signed up for the course (or multiple courses) because you've always wanted to learn more about     fill in the blank    . You likely have none of the extrinsic motivators mentioned above, in fact you probably have a few working against your completion of the course like your day job, the school you are attending for credit, or other aspects of your life.

What to do, where/how should we learn? Well that's a question that is different for each topic and learner but here are some of my thoughts.
  • When a student tells me they want to go to college to study     fill in the blank     because it sounds interesting, I tell them to go buy the book, get an internship, or something else like that. I've heard universities defend their place in society because of the experience and community. That's great and I agree, but I can have a discussion about a topic anywhere. I've said this to students for years, and I'll say it now, "Go to college to get a job (about something you are passionate about)". If you are paying a university tens of thousands of dollars a year just to learn something, with little or no job prospects, you are either fabulously wealthy or out of your mind. Make sure you are going to get a return on your investment.
  • Semester long courses and video tutorials are not my preferred method of learning but they may work for you. It used to be the only way to learn something was to get a book or take a class. Now you can find all kinds of ways to learn a topic in whatever medium you wish. There are hundreds of videos about the Pythagorean Theorem alone! There's also websites, books written for all levels of learner, MOOCs, forums, meetups, etc.
  • If you want to learn more about a topic, a long course might not be the best way to start off. Do a little research on your own first to find out if you really want to invest weeks of time and energy into it (plus it would greatly improve the registration/completion ratio).

I love the Web and books because I can get what I need and thats it. But, before you bring up the shallows argument, believe me I read giant tomes cover to cover because once I learn a little, I want to go deeper and understand more. MOOCs are a fantastic resource, but we need to be a little less obsessed with completion rates and as my colleague says determine whether or not people are meeting their learning goals/needs. Learning is a messy lifelong process and sometimes it takes weeks/years to fully understand something.

I've always defended things like this (we seem to have shifted our ire from Khan Academy to MOOCs) not because of what they are, but because of what they could be. Formal classrooms have existed for hundreds of years, the technology powering these MOOCs are not even a decade old. Technology will catch up with pedagogy and even provide opportunities to learn in ways not easily accomplished otherwise. That's no excuse for a poorly designed class. A poorly designed online course is no better (and often worse) than its live counterpart so please think of your learner experience but also think of how the new medium impacts your content.

I'm excited that more people are talking about education and technology's role in effectively supporting it. Regardless of your opinion of MOOCs, they have made pedagogy and are making content accessible to learners a part of the national conversation. We should always defend others right to experiment (and fail) and continue to be skeptical of overhyped claims.

Job Posting: Google Teaching Fellow

Here's what you need to know, Google's looking for an awesome educator.

A couple of years ago, +Dan Meyer  posted that the Curriculum Fellow job at Google he had previously worked on was hiring again. I saw that post, and immediately posted my resume to the Google Jobs website. I had no idea how much that action would change my life.

I was very happy as an educator. I worked at an awesome school that used Project Based Learning and had a great robotics team. But there were two things that compelled me to apply. First off I told my students and friends that the only two things that would make me leave my classroom were if the Mythbusters or Google wanted me to work for them. The second was how much I wanted to see others use Computer Science and Computational Thinking in their classroom.

I blogged often about Computational Thinking but I still wanted to reach a wider audience, plus it is difficult to create high quality lessons when you have a class everyday. Since working at Google I've been able to accomplish both of those things (in my humble opinion). The Exploring Computational Thinking reaches many educators each month who are starting to implement the lessons but more importantly the philosophy and tools into their classes. I've also had the privilege of working on many other awesome projects impacting education.

I'm happy to pay it forward and let you know about another awesome opportunity for educators, take a look at the job posting and see if it would work for you. You will have amazing managers, an exciting mission, and you will have freedom to create and innovate. Sounds awesome? You have no idea....

How I Used Google Drive to Create and Host My Web App and Hello Oppia

Has this ever happened to you? Back when my students and I were exploring Computational Thinking and developing using Python, and Processing. We ran into a big stumbling block, which was saving, sharing, and hosting our files.

Even though I had a very supportive IT manager, it was still difficult to have students develop anything substantial. Our students accessed all of their school files on a networked drive which was tricky and slow to access from home, students were not able to create or send zip files, and sharing their work publicly was difficult for numerous reasons. Have you experienced something similar?

For a project in my Masters program we were asked to develop a learning environment. After brainstorming for a little bit, I decided to create a environment where people could determine how well they could recognize the sound of a note and perhaps improve their ability to identify a pitch.

I realized this was an opportunity for me to dangerously overcommit and accomplish four additional tasks within this project:
  • Improve my knowledge of web development by creating the environment using HTML and SVG (Scalable Vector Graphics like those created in Inkscape or Illustrator)
  • Write higher quality code than I have in the past (Physics Gizmo refactoring is at the top of my list when I graduate)
  • Develop and deploy 100% in the cloud
  • Support my colleague's 20% project Oppia (more on that later)

Leaving Behind Bad Programming Habits

I am not a professional programmer and I did not study Computer Science at college, so I've picked up some habits that make it difficult to have code that is easy to update and maintain. I recently read Code Complete which taught me a lot about how to improve how I design and write code. I realize it is a tome, but I would highly recommend it and you can skip to the parts you want or need. I'm learning a lot from my previous creations and like any art, it takes a lot of practice to become good at programming.

I have been reading up on some of the new fun features HTML5 provides, but based on some advice from my colleague Neil, I decided to use SVG rather than the canvas. This turned out to be excellent advice and it was fascinating to learn how one can programmatically create graphics. Creating shapes using Python Turtle is one of my favorite activities for students to learn how to think computationally and creating your own SVGs is a great next step. In my experience, students love creating their own works of art and will endlessly play with it until they get it just right, then they'll tweak it to see what happens.

Developing in the Cloud

Why was it so important for me to be able to develop my application using only web-based tools? Well there's the reasons I mentioned above, where my students and I found it difficult to develop, save, and host code (let alone collaborate) from their school laptops. Plus, I have become so spoiled that I like the ability to have all of my files automatically backed up and accessible from any device.

When I started looking into options for ways to develop software online, there were some high quality paid services but these were more than I needed, were cost prohibitive for a classroom, and sometimes required you to use a command line / terminal which was not an option for students at school. On the other end of the spectrum there are many great websites that allow you to code in the browser, but often lack the ability to save your work, Sage and IPython notebooks are two excellent exceptions that would be great additions to your classrooms.

Recently it was announced that you could host a website from Google Drive. I added Neutron Drive and ShiftEdit from the Chrome Web Store and enjoyed using them both. They have many awesome feautres like syntax highlighting, lint testing, and collaborative editing and are each adding new ones all the time. Best of all I was able to write 100% of my code within Google Drive which meant my work was always backed up and I could keep working on it anywhere.

I highly recommend using this process for students to easily create, save, share, and host their work. I would love to see students collaborating on code much like they do with Google Docs for writing. If your school has Google Apps for Education, your IT manager can deploy these apps to your students right away.

On the right is a screenshot of the app I created for my class, click here to try it out. I plan to continue to develop this after I graduate. I'm also sharing the Oppia Opera code if you would like to play with it yourself.


My colleague Sean, who works on the Course Builder project, spends his 20% time working with others on a project called Oppia that allows you to create branching explorations.

Think of it like a choose your own adventure tool, but the learner can explore any topic you set up. When I first met Sean almost a year ago, he demonstrated the idea that would later become Oppia using an exploration in combinatorics using three balls. Since then, the team has added more features so you can explore language, music, and more.

When I was developing the music app for my class, I asked Sean if it would be possible to integrate content from another site into an Oppia exploration. I had the PhET tools in mind when I proposed this to Sean and I'm glad to see they were able to pull it off as it opens up many of the simulations and tools that we use and love to have added functionality so students can have a guided exploration through a topic.

Here's a screenshot of a sample exploration where Oppia provides feedback to help you find a landmark:

The team has worked hard over the last few months to make it relatively easy to create and modify an exploration so try it out and send the team your feedback and ideas. Oppia is open source so you can run your own instance or modify it to meet your needs. It will be interesting to see Oppia evolve over time and I am excited to see how we can interact with content online so it is more interactive and feels more like a conversation.

Lots of updates in this post,  I appreciate you reading to the end. I've wanted to share these updates with you for a long time but my Master's program is consuming every minute I have these days. I expect to graduate in May at which point I can continue to explore, develop, and share many other projects I am working on.