Computer Science in High School Education… at long last?

The Des Moines Register reports that the state of Iowa is contemplating requiring computer science coursework as part of its core high school curriculum. The team of science, technology, engineering, and mathematics experts who is recommending this to the state claim that requiring computer science coursework in Iowa high schools is a “very bold recommendation”.

The article quotes various people making statements about what this computer science coursework would tentatively include, suggesting that their rough plan is to convey to students

  • how computer systems work
  • how to write computer programs
  • computer science topics that reflect current industry needs

The first two points have been making appearances in K-12 education at least since the 1980s, in the form of Seymour Papert’s methodologies using Logo and Turtle programming, and more recently through the MIT Media Lab’s Scratch programming initiative. [I myself was introduced to computer programming at least in part in an elementary school Logo/Turtle programming class circa 1990.]

The third point sounds delightful, but, if formalized into published curricula, might be impractical. Core computer science knowledge like data structures, algorithms, and automata theory are always in style, but keeping up with the cool, hip programming languages and tools is evidently a challenge for textbook authors and for the teachers who adopt their books. This has been true in college-level computer science academia, and I imagine it would be at least as true at the high school level. It might be easier to pick some reasonably current set of technologies, like maybe Python (24 years old), Subversion (14 years old), and GNU Emacs (30 years old), and assume that the ideas behind those technologies will still be relevant when the students graduate.

[How do college computer science graduates cope with having not been taught the most current languages and tools of the trade? Despite new things coming out at a frenzied pace, programming languages that actually see much real-world use are still catching up with the core ideas of languages like Lisp (57 years old) and ML (42 years old), while typically retaining a great deal of syntax in common with C (43 years old). Learning those three languages, or some other set of similar languages, gives abstract knowledge more than sufficient to pick up any language the software development industry is likely to throw at its practitioners for the foreseeable future. For that matter, you could probably still spend a fifty-year-long career writing code in nothing but C, if you tried!]

An understanding of computer systems ought to permeate much serious decision-making in society; while some of these students may indeed discover their vocational calling in a high school computer science class, even non-programmers should wield enough computer science knowledge to make sound decisions on election day, if nothing else. So cheers to all of the state education departments who are requiring the next generation to learn a bit of computer science! But at the same time, I wonder, after all of the K-12 computer science education groundwork that was laid in the 1980’s… why did this take so long?

Google Photos

This week Google announced and released their new photo sharing service. I mostly use Flickr, but I had a handful of photo collections in Google Picassa years ago, which got dragged over into Google+ photos, and now have dutifully arrived in Google Photos.

As an overall interface for viewing photos, Google Photos seems nice, but not particularly better or worse than Flickr. There are options to share photos on Facebook, Twitter, and Google+, but I see no way to get various-sized photos to embed within web pages as I do with Flickr.

I also see no way to tag photos, but this might not be significant, as the facial, object, and location recognition built in to Google Photos is so accurate that it comes across frightening to this privacy advocate.

Facial recognition in my photo sample set is almost perfect. If the face is looking straight on, or is turned to the side, or is wearing a hat — doesn’t matter. Google Photos can pick out the face. It also correctly identified photograph locations including Boston, Washington D.C., Cedar Rapids, Omaha, Irvine, Joshua Tree National Park, and San Juan Capistrano, seemingly based on photographic content. (My ancient Canon 5D camera doesn’t have a GPS to embed location data, and my even more ancient Canon EOS-3 film camera certainly doesn’t embed location data!)

Object recognition was nearly as accurate, with a search for “food” including pictures of restaurants, pictures of food on a plate, and pictures of unpicked vegetables growing — though I was amused to see a picture of a live crab in an aquarium counted amongst “food”… not strictly incorrect, but unexpected.

The two main things that I do with photo sharing is to set up a place to store, share, and browse photos, and to embed them into web pages (such as this blog post). Google Photos does a fine job of the first set of tasks, but apparently not so great at the second task, so I will be sticking with Flickr for the time being.

The content recognition software behind Google Photos is outstanding, but might open a whole new can of worms in terms of reasonably expected privacy. Obviously, anyone sharing a photo in public would not expect privacy of the photo itself, but the fact that so much data can be automatically sucked out of the photo could easily give one pause. And it doesn’t really matter if your photos or stored on Google Photos or not, as Google can find and analyze photos from Flickr or from any public photo site.

Compulsory Mechanical Licensing

I’m at the tail end of producing a music album for a client, and have been sailing the seas of mechanical licenses. Briefly, for the uninitiated, in order to use someone else’s composition on your album, you need to secure a mechanical license. This is frequently done by working with an organization like the Harry Fox Agency, which represents many different music publishers, or going directly to a particular music publisher. But what happens when the copyright holder of a song isn’t represented by a music publisher?

This happened on one of the songs for my current project. Or more precisely, the song had been co-written by two composers, one of which had his copyright represented by a music publisher, and the other of which did not. So going through the Harry Fox Agency or through the publisher, I was only able to license 50% of the song.

U.S. copyright law makes provision for a so-called compulsory license, in which case, just so long as you file the initial paperwork before publishing your recording, you can simply notify a copyright holder that you will be engaging in a compulsory license, and then follow up by sending them a check for the royalty payment, based on the number of copies to be published and the current government-established statutory rate. Not as easy as working with a publisher or with Harry Fox, but certainly doable — albeit with a catch. U.S. Copyright Office Circular 73 explains that you must also:

Make … a monthly statement of account, to the copyright owner or authorized agent of the owner on or before the 20th day of each month for every phonorecord made and distributed in accordance with the license.


File with the copyright owner or authorized agent of the owner a detailed annual statement of account, certified by a certified public accountant.

The circular does not suggest any end to this, implying that monthly statements and annual accountant-certified reports must be mailed to the copyright holder indefinitely, even if no further royalties were owed. I don’t want to deal with this myself, nor do I want to burden my client with needing to deal with this.

I must not be alone in preferring to avoid directly engaging in compulsory mechanical licensing, as there are companies set up that will do this for you. One such company is Easy Song Licensing in Minneapolis, a music recording company who saw a need to help others with compulsory licensing. After spending hours across about a week trying to figure out to whom I owed a royalty payment and how to get it to them, I gladly paid ESL’s modest fee to handle the compulsory licensing paperwork for me, wishing only that I had done so earlier!

Bark Busters Progress

In March we met with a local Bark Busters trainer to get assistance working with Samantha the Border Collie. Despite previously earning status as an AKC Star Puppy, as a three-year-old dog her obedience had been deteriorating and her demeanor around people she wasn’t familiar with was unacceptable. She would frequently refuse to come back inside the house after playing outside off leash, she would growl and bark at guests, and she was generally assuming a role of command both within our family and wherever she went.

Past dogs in my life were much more naturally submissive (for the most part) to their human caretakers, and we needed some help learning how to get Samantha under control.

Our Bark Busters trainer showed us that we had to take on the role of pack leader for Samantha, including responding to her not as we would respond to other people, but as a lead dog would respond to other dogs. We learned how to growl at Samantha, and, if that doesn’t get her attention, to growl and clap our hands simultaneously, or even to growl and throw to the ground a “Bark Busters pillow”, filled with metal bolts that clank together making a sound unpleasant to dogs’ ears. All of this is meant to simulate a dog pack leader growling and, if needed, snapping at other dogs, to deter unacceptable behavior and to signal that there’s no reason to get upset right now.

Of course, not every response should be negative. On the positive side, praising the dog for a successfully following commands and for behaving appropriately should be boisterously happy, as should calling for the dog to come. Other commands (sit, stay, etc.) should be given firmly and directly, neither too happy nor too dour.

We learned that we must enforce ourselves as the leaders of the family, even in seemingly minor things. We go through the door first. We go up and down the stairs first. We say when it’s time to play and when it’s not. On walks, stay in front, not behind. Over time, the dog will learn that its owners are in the lead, in charge, in control, and that she doesn’t have to be.

All of these things intertwine together to promote obedient behavior in the dog, and to diminish anxiety wrought by the dog feeling that she’s responsible for the household — a job that is really too big and overwhelming for her.

Putting what we’ve learned into practice, the results have been immediate and astonishing. Samantha’s behavior has improved many times over, going from being a dog that would only listen to us if it suited her mood, to a dog who seems eager to please, and truly apologetic if she lets us down. We’ve not brought her into contact with unfamiliar house guests yet, though her behavior around the Bark Busters trainer has gone from antagonistic to playful. We are hopeful to see similar changes around other visitors.

Shortly after we first started noticing issues with Samantha, I bought a Bark Busters book, which I wrote a mediocre review of on Amazon. I stand by that review of the book, because I found it confusing and poorly written. But, with the assistance of an in-person Bark Busters trainer, I have been extremely impressed with their methodology.

edX Courses for Credit

Here’s an interesting new take on mixing credentials with MOOC-style education: Arizona State University through edX is starting to offer for-credit undergraduate courses online.

These courses are available for anyone to take free of charge, but upon successfully completing the course, students who started off with the $45 “verified student identity” have the option to be granted formal credit for the course, at a cost of $200 per credit hour.

At a total cost of $845 for a 4-hour course, this might still not be a viable option for everyone to pay for a whole degree out of pocket, but it seems like an especially enticing path for busy full-time employees of corporations that offer tuition reimbursement. Such reimbursement requires successful completion of the course, or otherwise the employee gets stuck with the bill personally. With this new ASU/edX approach, the employee would pay at most $45 if ever-fluctuating personal and/or job responsibilities make passing the course less plausible than it appeared when signing up for it…

The Benefits of Dropping Out

There’s an infographic floating around the business news blogosphere proclaiming that nearly one-third of all billionaires dropped out of college, showing the percentage of billionaires with degrees in various categories, including the largest category, none. The implication seems to be that the path of study most likely to lead to billionaire-level wealth is to leave school.

Of course, the obvious flip-side is that while one-third of billionaires hold no degree, two-thirds of billionaires do hold a degree. Obviously the best path toward being a billionaire is to finish college with a degree in something!

But the traditional college path in life has been criticized a lot recently, and perhaps rightly so. Costs continue to get higher — my own alma mater increased tuition by approximately 50% since I graduated, with only about half of that accounted for by inflation — and opportunities for success without a degree seem ever more abundant. Going into business for yourself on the internet, with minimal cost and no formal prerequisites, is a very real option today that was harder ten years ago, and much harder twenty years ago. And if you want the education that ostensibly goes along with obtaining a degree, there are numerous free and low-cost options for self-study that exist today. (Along with some options that have existed for centuries…)

Still, presenting the notion of dropping out of college as a path toward success seems dubious. Rather than asking, what percentage of billionaires are college dropouts, maybe we should ask, what percentage of college dropouts are billionaires? I haven’t yet found statistics on that, but Wikipedia has a nice overview of high school dropouts, suggesting that

  • high school dropouts are more likely to be unemployed than high school graduates
  • lifetime earnings of dropouts are on average $260,000 USD less than graduates
  • two-thirds of U.S. prison inmates are high school dropouts
  • a third of high school dropouts live in areas of poverty
  • high school dropouts have a shorter average life expectancy than graduates

And just as with college dropouts, there are counterexamples of successful high school dropouts, prominently including Walt Disney.

Statistical data pertaining to high school dropouts does not necessarily apply to college dropouts, but I suspect that the general message carries over: dropping out of school per se does not lead to success, neither for a 17-year-old high school student nor for an 18-year-old college student. What can lead a dropout to success, though, is doing something else productive with their time. And the same goes for graduates, who could easily choose to live a life of unproductive sloth after they finish school.

GNU Guile on OS X via MacPorts

Despite having good success building other GNU packages, I have tried unsuccessfully for years to compile GNU Guile v2 for Mac OS X. Perhaps just as well, since OS X is proprietary software, but nevertheless, I wanted to get it running.

One blogger has written extensively about building Guile v2 on OS X, and following those directions helped move me along quite a bit. But ultimately I gave up when the compilation process failed to find GNU Readline, because the LLVM clang C compiler on OS X (masquerading as the GNU C compiler) was using some pseudo-Readline library provided by OS X instead of the real GNU Readline library. This problem, too, may well be surmountable, but I had had enough.

I installed MacPorts and ran its installation utility to get GNU Guile 2.0.11. MacPorts chugged away for a while; I went out to dinner, and when I came back, Guile 2.0.11 was installed on the OS X system. Hooray!

Delighted, I headed back to the MacPorts website to donate money to their project; after all, I had surely burnt up hours of my own time fiddling with this, to no avail, and MacPorts solved the problem for me while I was eating vegetable stir fry. Alas, I could find no link on the site for making donations, so I will just publicly recommend them instead.

If you run into a similar problem, try using MacPorts — preferably sooner than I did!

Richard Stallman at UIUC

Last night I attended Richard Stallman’s lecture at the University of Illinois in Urbana-Champaign, on the subject of “Free Software and Your Freedom”. Dr. Stallman launched the GNU Project and the Free Software Foundation some thirty years ago in order to create and promote free software:

“Free software” means software that respects users’ freedom and community. Roughly, it means that the users have the freedom to run, copy, distribute, study, change and improve the software. Thus, “free software” is a matter of liberty, not price.

I won’t try to summarize everything that was said at the lecture, but some segments stood out to me as particularly interesting:

Proprietary Malware

While free software grants users the freedom to run, copy, distribute, study, change, and improve the software, proprietary software is licensed such that there are restrictions on one or more (possibly all) of those attributes.

One detriment of proprietary software is that you as a user cannot know for sure what the software is doing. As has been demonstrated in various well-known proprietary applications, the software may well be sending data about you or your usage of the software to its developers without telling you. This, Stallman concludes, makes the application malware. It is spying on its users, and is an attack on their privacy.

Publishing the application as free software, on the other hand, is a defense against such malware. While it is still possible that a free application could spy on its users, it is much less likely, as anyone who uses the software could plausibly investigate what it is doing.

Mobile Phones and Surveillance

Mobile phones — smartphones and otherwise — can be remotely accessed and controlled by service providers, and can be converted into listening devices, to transmit all audio that they pick up. The only surefire way to prevent this from happening is to remove the batteries. All of the batteries. Some phones, Stallman says, include multiple batteries, including one that is designed to prohibit being removed. Other phones are designed to prohibit removal of batteries altogether.

Even when not converted into listening devices, mobile phones still, out of functional necessity, track where they go — and thus track where their users go. The mobile service providers can know at all times where their users are located, and can maintain a database of everywhere they have gone in the past.

Thanks to the efforts of NSA whistle-blower Edward Snowden, we know that there is far more surveillance of us today than there ever was in the Soviet Union. (Upon mentioning Snowden, the audience erupted into applause, and Stallman led everyone in three cheers for Snowden: “Hip, hip, hooray!”)

Service as a Software Substitute

What many people call Software as a Service — providing a software application over the internet, typically through a web interface — Stallman calls Service as a Software Substitute (SaaSS). Software that runs on someone else’s server is out of your direct control, so even if it is free software, it doesn’t matter: you cannot change it, study it, and so on. By definition, you are handing your data over to someone else, since your computing is being done on their computer and not yours, so the door is wide open for the SaaSS provider to invade your privacy.

Not all web applications fall under the category of Service as a Software Substitute; it depends on what service they provide. Communications services and collaboration services are not SaaSS, because by their very nature you must be sharing data over the internet. Even if you ran a free local application instead of using a web application, you still would end up sharing the data through whatever servers and routers were between you and those you were communicating with.

How can you tell if a web application is SaaSS or not? Dr. Stallman recommends a thought experiment: imagine that you have the most powerful computer possible. Using that computer alone, can you run the application you want to run? If the answer is yes, then to make that application run remotely from a server would be SaaSS, as that would be a service substituting for software.

For example, no matter how powerful of a computer you had, you could not use that computer by itself as a web search engine. You need to connect to other computers, and use resources on other computers, in order to have the functionality of a web search engine. So a web search engine application is not a software substitute; it is a service.

Valuing Freedom

If all software in the world today was instantly licensed as free software, that would not be enough to guarantee ongoing software freedom long-term. People need to understand the value of freedom when it comes to using computer software; otherwise, someone could come along offering some new technology or some improved user experience with a proprietary license, and it would be accepted on its technological merits alone.

Software usage is still relatively quite young in the world; only for the past several decades has it been part of society at all. But there has never been any serious public debate or discussion about what rights and freedoms software users ought to have. Such matters were decided by proprietary software vendors as they published and sold their products. Is this really what is best for society?


  • Reverse-engineering of proprietary hardware drivers and related software would be a huge benefit to free software development today. And developing expertise in reverse engineering would also be a potentially good career idea, as it’s an in-demand skill set that not many people have.
  • If you want to learn how to develop large software applications from scratch, it’s not very helpful to spend time developing small software applications from scratch. Instead, start with contributing small changes to existing large applications. Then move on to contributing large changes. And then move on to building your own.


I’ve read many of Richard Stallman’s articles and listened to recordings of many of his lectures, but I still found attending this lecture in person to be a particularly insightful and educational experience. There is clearly much good that can come from having, using, and promoting free software; and there are clearly social ills and injustices that can come from using proprietary software.

As I sat in the auditorium listening, I started to ponder how arguing for free software might be likened to debates and discussions held in the framing of the United States government. What rights and freedoms and restrictions are best for the people, and for the long-term good of the country? Indeed, just considering how free software can help enforce constitutionally-provided privacy makes a strong case for why it is in the best interest of the people.

More reading from FSF Project GNU:

[Much of what I have written here is based from notes that I quickly jotted down during the lecture, and I may have misunderstood or misinterpreted something. Corrections would be welcome.]

More: a few photos of the University of Illinois campus.

Dental Hygiene Apathy vs. Big Sugar

I had let my good flossing habits slide for a while, but following a dental checkup six months ago, I got back on flossing every day, as the dentist office recommended. This week’s checkup showed markedly healthier gum tissue than last time. I asked the dental technician if it would be even more advantageous to floss twice a day, instead of only once. She said it absolutely would be better, and in fact they would like to see people both brush and floss twice a day.

Why don’t they recommend twice-daily flossings outright, then? Most of their clients don’t floss once a day yet, she said, and they don’t want to bother trying to pester them up to twice a day.

Meanwhile, this week an article appeared in the Washington Post revealing that the sugar industry wielded their money and power to influence the United States government away from recommending that people eat less sugar to prevent tooth decay, and to instead focus on methods of reducing the impact of sugar through more extensive dental hygiene. The official reason? It would be ineffective to try to get people to eat less sugar.

While that may be true, the actual reason appears to be strictly financial; the sugar industry wants to continue making money, even if the product they are selling, at least when consumed in the quantities typical today, is harmful to its customers. As explained in the article, a recent push to include a label indicating “added sugar” to food products which have been sweetened has met with resistance from the sugar industry — the same people who say that “sugar has been safely used by our mothers and grandmothers for hundreds of years.” If that’s really what they believe, one might think they would like to see the label proudly proclaiming the inclusion of added sugar…