#PassionDriven – The Brutal Truth About Teaching

I recently came across an article  titled “How I Became an Unfair Teacher”. It was written by a primary school teacher who was trying to understand the influence that a teacher has with their students. One particular section was telling:

Classroom lessons may slip quickly through students’ fingers, but the classroom experience lingers in memory. Each teacher offers students a different model of authority and justice. We set our own standards of fairness and sometimes fail to honor them. A teacher swings a heavy club, and we can leave big, purple bruises if we’re not careful.

Ideally, we’d consider every student’s perspective, every moment of the day. But that effort is difficult with the limits of our time, energy, and imagination. In practice, it helps to adopt rules of thumb, rehearsed habits of fairness that can spare students undue suffering—and keep us from living on as demons in their memories of school.

Even though I teach at the undergraduate level, I’ve noticed the same things in my work. You get so focussed on getting through the material that you forget that you are serving your students’ needs and you can’t do that until you pay attention.

It’s a very good article and I encourage everyone to go read it, but that’s not what inspired me to write this post.

That happened when I read the comments.

Specifically, one comment in particular:

And this is why we have raised a generation of emotional weaklings who give up after the first shock–not making first team on the varsity, not having the work ethic to pass an AP test, not having the intelligence to make it through the first quarter of community college.

Every year I see the kids in my high school leave and 90% of them claim to be going to this or that college. Within a year 70-80% of them have dropped out. Your teaching philosophy/worldview is a huge part of the reason why they drop out. They have no guts. No determination. Emotionally stunted, they can’t handle setbacks. With massive egos, the moment they encounter this indifferent thing (which far surpasses your own perceived indifference) called reality they throw their hands up and quit.

Surprise. You…and your students are specks of cosmic dust. You’re not important. So buck up and realize that in life you’re going to get your feelings hurt.

Or you could just keep setting your kids up to fail because there are way more emotionally difficult things waiting for them in this place where the training wheels come off called adulthood: stagnant wages, student loan debt, the destruction of a middle class life, breaking of unions, loss of health care benefits, the pension that vanishes the moment you go to collect it, skyrocketing inequality.

Working to reverse these trends will be even harder than keeping your eyes open in class because you had to work the night shift.

It took me a while to figure out why this comment bothered me. At first I thought that it was needlessly cruel. Then I realized that it was worse than that. It was lazy. True cruelty requires engagement and this commenter couldn’t even be bothered. They just wrote off everyone who wasn’t them. In other words, this person took 253 words to just say “Meh”.

When I was younger I might have speculated about a person with this sort of attitude – what’s their background, why do they think this, etc. Now I just call it as I see it.

You may think that you’re delivering ‘tough love’ to the kids to ‘scare them straight’ and ‘give them some backbone’ something something get off my lawn something FREEDOM! But you’re just a lazy, indifferent d-bag.

Whatever happened to making a better world for our kids? I realize it’s much easier instead to try and drag them down to our level but I don’t think that was always the case.

My mother was an environmental activist. She did this while taking care of her husband, five kids and living in a town where the primary employer was also the region’s largest polluter and hence a major target for her activism.

This had a cost. She got screamed at when she was buying groceries. The priest at our local church told her she was no longer welcome at Mass. My father, an independent businessman, lost customers. We kids were teased and bullied at school (by students and faculty) because of what our mom did.

But we supported her and her work, despite all that. When we asked her why she put up with all of this crap (in addition to the mind-numbing amount of work involved in serious activism), she would tell us that she wanted to make a better world for her children and for her children’s children.

That lesson stuck with me. While I can’t say that I have made as big a difference in the world as my mother, I put in what effort I can in as many ways as I can to make things better. For me this is the primary goal of teaching – to make a better world. It’s hard work and it doesn’t always pan out. But, like my mother, you keep going back and you keep trying.

#WeHateMath Apples v. Oranges

Recently I was asked to briefly explain the difference between math and arithmetic.  Here’s what I came up with:


Arithmetic can answer the question:

“What is 3 plus 2?”

Arithmetic cannot answer the question:

“What are 3 apples plus 2 oranges?”

Math, on the other hand, can take a higher order look at the problem and answer:

“3 apples plus 2 oranges are 5 pieces of fruit.”

Math is about relationships and patterns.

Math is arithmetic plus context.

#WeHateMath #DIYMath FreeMat

(Cross-posted at Coding4Humans)

Today in DIY Math we’re looking at  FreeMat. As the name suggests It’s modeled after MatLab. FreeMat has been in development for over a decade by a group of volunteers

System Requirements – Specific hardware requirements were not available but the pre-built packages I tested all run on 32 or 64-bit Intel-compatible CPUs. The application itself doesn’t seem to use much memory. As an example, the Mac version uses about 85 MB of real memory on my system. Since Windows XP is supported, we can assume that XP-compatible hardware constitutes the base system.

Installation – The latest version is 4.2 and is available for Windows (XP and up), Linux (various) and Mac OS X. In addition to pre-built packages for the above platforms, the source code is also available and is released under the GPL license. All versions of FreeMat are kept at the same version level and functionality.

Windows: Simply download the 52.5 MB setup file and double-click it. (NOTE: A portable version of Freemat is also available so you can run it from a thumb drive without installation.)

Linux – I installed FreeMat on Debian Linux using APT and on my system it was a 12 MB download, using an additional 22 MB of disk space.

Mac OS X – The installer is a 79.5 MB compressed disk image (DMG) file. Double-click the file to mount it, then drag the program and documentation to your Applications folder. The two files together take up about 250 MB of disk space.

Documentation – The Mac download comes with a PDF manual detailing all of the functions available in FreeMat. (For Windows or Linux, you can download the manual here.) The manual is automatically generated using Doxygen, which scans specially marked comments in the source code and outputs documentation in a variety of file formats.

This is both a good thing and a bad thing. It’s good in that it makes it easy for developers to actually maintain their documentation, assuming they remember to update the comments. It’s a bad thing because there’s no guarantee that the resulting document will be well-written. In fact, the included manual is very sparsely written, despite the 162 page (!) table of contents. It is less a manual than simply an API reference. Each function or class is briefly described and includes one or two usage examples. The target audience for this manual are those who don’t need a manual. It’s comprehensive but very terse.

A much better option to start with is the FreeMat Primer. Who’s the audience? Let the authors (Gary Schafer and Timothy Cyders) tell you:

We assume that you have Freemat properly installed and working. If you have any issues, direct them to the online Freemat group, http://groups.google.com/group/freemat.

This book was originally written for the Windows version. The book now covers more of the Linux and Mac versions, as well. In those cases where there are differences, we’ll point them out.

It’s a much friendlier introduction to the software. It’s very readable, with plenty of screenshots, little tutorials and code examples. With this and the official function reference you have a very good documentation base. In addition, there is also a Google group available for more interactive support. There is another Google community intended to host FreeMat tutorials. (At this time the content is a bit sparse.) You can also type helpwin at the command prompt from within FreeMat.

Compatibility – Based on the scripts I tested, MatLab support is somewhat hit-or-miss. I’ve been able to run scripts with no modifications, minor modifications or not at all. I would suggest that you test your Matlab scripts on a case-by-case basis and then decide whether you want to make the changes or just re-write from scratch. The scripting syntax is similar enough that most of your work will be figuring out equivalent function calls.  (A MatLab to FreeMat translation guide would be a really good project. Better yet, some kind of conversion tool.)

Command Line vs. GUI – The Windows and Mac versions of FreeMat are targeted at a graphical interface so accessing the tool from the command line is at best a non-trivial . The Linux version can be launched from the CLI. With no parameters, the graphical client starts up by default. To use the CLI version only, start the tool with the option -noX or -nogui to suppress the graphical subsystem This will give you a FreeMat command prompt in your terminal window. If you simply wish to run a Freemat command and then exit, use the option -f to run the tool in command mode. (NOTE: if you want to see the output of your command, make sure to specify that as FreeMat will not show any output.)

Integrating FreeMat with your native scripting environment is problematic (okay, just about impossible),as FreeMat scripts are meant to be run from within the FreeMat interface. You can edit them inside FreeMat or using your favorite text editor but make sure that they are saved to FreeMat’s working directory. (You can set this up by running pathtool from within FreeMat.)


The GUI for each version is comparable in look and feel.

FreeMat Interface

FreeMat GUI

This is from the Mac version of the tool. In addition to the main terminal window, FreeMat also tracks your command history (allowing you to invoke a previous command simply by double-clicking on it), tracks what variables are currently in memory, along with their data types and values if applicable. The Debug window is supposed to show any error or warning messages but on all three platforms I tested, the messages showed up in the main terminal window and the Debug window remained blank.


Pros: Easy installation, all supported platforms are kept current with a common codebase, decent documentation and online support.

Cons: Development progress is a bit slow. The latest release (4.2) was posted in June of 2013 and that was two years after the previous release. CLI support is limited or non-existent in the Windows and Mac versions and all scripts are restricted to running within the FreeMat environment. Third party support is a bit anemic.

Would I use this in my class? – I would feel confident recommending this to my students. The ease of installation and minimal setup are a definite plus, you don’t need the latest hardware to run it and the price fits everyone’s budget. It supports nearly everything we might do in 100- and 200-level math classes with enough overhead room for more advanced work.