Wednesday, January 30, 2013

Canadian Computing Education Day + Scratch Day Canada

This came though on one of the mailing lists I am on. I know that some from Canada read this blog (or so the analytic report claims) so I thought I would also share it here. Hopefully a lot of secondary and post secondary schools will be able to participate and encourage more computing education in Canada.

Friday, February 22, 2013 is Canadian Computing Education Day + Scratch Day Canada

Inspired by CS Education Week (, Canadian computer scientists in CACS/AIC (Canadian Association of Computer Science/Association d'Informatique Canadienne - have been working to create a national program of events on February 22, 2013 under the banner of Canadian Computing Education Day (hashtag #CanCompEd, website:

The timing of the event will make it easier for Canadian Computer Science Departments to host visitors on their campuses that day, which happens during a week when many schools don't have regular classes.

CanCompEd Day will also be Scratch Day Canada (hashtags #ScratchDay #Canada).  Can you please help to spread the word, and encourage participation in your communities?  If you live near one of the schools listed on the website, please let them know that you are excited about Scratch Day Canada.  If you can host an event, please let us know so that we can add you to the list of events.

Tuesday, January 29, 2013

New CSTA Discussion List

CSTAbadgeThis is something we (Computer Science educators) have needed for a while – a general purpose mailing list to discuss a wider range of CS education topics. As this announcement points out there are regional lists and specific topic lists but nothing really for the wide range of what makes K-12 computer science education topics. I’m excited about this announcement and hope lots of you will participate.

The Computer Science Teachers Association is pleased to announce the launch of a new member benefit -  a listserv to foster communication about all issues related to computing education.

We recognize that other electronic communities for computing educators exist, but ours strives to be different.  Instead of focusing on one particular topic (AP, Scratch, Alice, App Inventor,etc.), we wish to create the first place you visit to ask the overarching questions that transcend one particular tool, language, or course.

Consider this a place for our 13,000+ members to ask questions and share ideas about recruiting techniques, project-based learning, best practices for inspiring students in computing courses, best practices for teaching college-level work in the high school, textbooks, languages, etc.

To join the conversation, visit

Let’s use the power of our membership to work together to broaden participation in computing and to have loads of fun along the way!

Monday, January 28, 2013

Going Home Again aka Back To The Classroom

Started teaching again full-time today. I’m teaching at the same school I taught at 9.5 years ago when I went to work for Microsoft. There are a lot of changes. They’re taking attendance online (something I was working towards when I left) for example. In fact a lot is online. Email rather than paper memos for the most part. Moodle for classes. And of course some new faculty and administrators. The school day has changed (it’s longer) and the schedule has 8 periods in the rotation. I think we had 7 before but I could be wrong. There are now study halls. Never thought I’d see that but it seems to be working. I didn’t have a home room last time (as a department chair) but I do now. A lot is the same though.

In fact several times during the day I felt almost as if I’d never left. Kids are still kids. The concepts I am teaching are largely the same even though the software has been updated several times. I’m teaching in the same room along side the same computer teachers. That is a huge help as they are old friends and always have my back. That is something I needed a couple of times as things that had changed tripped me up a bit.

The students laughed at my jokes – always a plus. They paid attention to instructions. They worked (mostly) quietly (for kids) in study hall. It was a good day.

Interesting Links 28 January 2013

A couple of house keeping items to start. First off, did you know that you can get new blog posts by email? Yep, on the right side of the page is a little sign up for email updates that looks like this image-->
All you have to do is enter your email address and click on submit. You will get a confirmation email with instructions to complete the process. 
Secondly, one of the issues with moving to this blog location is that I lost a lot of the search engine juice I had at the old blog. This makes it hard for people to find this blog when they are searching either for me or for the information I am posting. If you find things here useful and have a web presence please think about linking here. I’d appreciate it.
Don Wetrick continues his web series of visits with teachers with FOCUS w. Guest Ms. Bottom and her Queen of the Holy Rosary students
New on the CSTA blog Training Critical Thinkers and Problem Solvers
A new site with a goal of helping to promote computer science education called got a lot of attention last week. One project they have is to get people to catalogue the computer science courses they are teaching at their schools to help parents find schools. They are also working on a video project of some sort. I’ll be keeping an eye on this to see what develops.
Is there a creative teen in your life? Encourage them to enter the Microsoft Safer Online Teen Challenge.
Texas CS educators if you haven't heard, registration for HP CodeWars 2013 is now open! Get your teacher/sponsor to sign up at And this year, HP is also holding CodeWars events in Roseville, California and Taipei, Taiwan. Check it out! This is one of the largest in person high school programming contests around and HP does a great job hosting the students.
And least I forget, just for a little fun, HP has added a "CodeWars Style" video contest for this year. details at
Also in Texas is the Lone Star Invitational – TCEA TA-CS SIG state wide HS programming contest in Texas.
In the educational game space, Kinect Games v2.6 featuring Math Mage is now available. Math Mage looks like a fun game where students wave their hands like a magician to select the right answers to math questions. This is the latest from David Renton a teacher in Scotland.

Friday, January 25, 2013

Education and Industry–Friends or Foes?

Industry and education should be the best of friends. They should both be working towards some common goals. Mutually supportive allies. These days  that doesn’t seem to be the case. And yet industry wants, needs really, an educated workforce. Schools want to produce a well educated civil population. An apparent disconnect already but is it really? I think not. While most educators think first about creating a population that can function in society and live full lives they are also deeply aware that students need preparation for work. While industry has some ideas about what education people need to do a good job they are also aware that a wider education is necessary for a fully functional and stable society. Industry needs stability to some degree. So there is some commonality there.

These days I hear teachers say they want to produce students who are creative, critical thinkers, team players who are able to not just “do math” and read and write but who are able to use those tools in new and creative ways. Cool! And what does industry want? Workers who are creative, critical thinkers, team players who are able to not just “do math” and read and write but who are able to use those tools in new and creative ways. What? You thought industry wanted mindless automatons who know little more than to follow carefully set out directions without  variation? Sorry but if so you are in the wrong century.

This is the information age and problem solving and creativity are the big need. People also need to be able to communicate well and work in teams. Whoa! So what is with industry pushing for standardized tests that are mostly multiple choice? Don’t they know that such tests stifle creativity and are the worst, least reliable tests possible? Ah, no they don’t. Industry is desperately in need of objective numbers to judge everything. Never mind that while this works well for machines it works generally pretty poorly for measuring people – its at least objective!

So what is going on here? Industry by and large (especially among knowledge worker companies) doesn’t feel that it is getting people with the sort of education they need. They are getting people who when asked to figure out a 10% discount on a $12.50 item reach for a calculator (real example). Or who can’t write a readable report let alone present a conclusion at a meeting. So they don’t trust the educational system. By the way universities are starting to distrust K-12 systems as well. They are offering way too many remedial courses these days.

This means that industry is looking for ways to ensure that a diploma or a degree means something that they can rely on. Since they don’t trust report cards they start looking for independent validation. Without educators being able (willing?) to provide a reliable measure they look to companies and education non-profits to come up with some measure that they can insist upon. Politicians who get more money from industry than from teachers (even Democrats) are only too happy to oblige. This causes teaching to the test and worse results leading to a vicious cycle. Reminds one of the rowing team with 8 coxswain and one rower. After they lost the race they fired the rower.

Far too many of these bad results are not the teacher’s fault either. Children who come to school hungry and stay that way all day can’t learn. People whose parents regard school as a free babysitter raise children who see not value in education. Students who live in fear for their lives in their neighborhoods have more immediately important things than school. On the higher income end students who’s lives revolve around sports or shopping or being cool tend not to take school that seriously either. Many of the problems we have are cultural and/or environmental not educational.

No one asked me but I think that if industry really wanted to help they would help on the input side not focus so much on the output. Schools, especially public schools, take who comes. They have no control (for the most part) on the “raw materials” to use industry speak that enter their schools. Industry would never put up with this. They would demand better raw materials or find a new supplier. This is hardly an option for any but the most selective admission schools. Fortunately people can be improved. Smile

Rather than trying to save money on teacher’s pay and benefits and increasing spending on tests that don’t help industry should look towards helping with other problems. They should insist of good lunch (and often breakfast) programs that make sure no student starts the day hungry or finishes it without a good lunch. Don’t think of it as welfare – think of it as an investment in quality. Industry should reward (you get what you reward) employees who volunteer in schools. Especially those who volunteer in lower income schools where students don’t have well-off highly educated role models at home.

Industry should invest in mentor programs. I’m a big fan of FIRST Robotics but there are others. Programs like this give students not just interactions with professionals but an eye towards being something other than what they see at home or in their limited neighborhoods. BTW I have heard from senior executives that having young professionals mentor students makes for better employees.

I’m also a fan of programs that but professionals in the classroom working with teachers on a long term basis. TEALS puts computer science professionals in classrooms that would not other wise be able to offer computer science courses at all.

Long term though I think we need more dialogue between educators and industry leaders. Too often I have heard people from industry lecture educators about “all the things they are doing wrong” and how “easy” it would be for them to do a better job. This is never helpful. Generally this is not helpful because the people from industry suggest (demand) things that educators know from experience just don’t work. Unfortunately too often educators don’t understand the vocabulary and points of view of industry people and so use words that, well, that just confuse the issue rather than clarifying it. Both sides are often so convinced that they have the answers that they don’t want to listen to the other. There is a lot of selective hearing on both sides.

In the long run I think industry and education do have common goals and aspirations for students. The problem is finding a route that gets more students there. That is going to take better cooperation then we are seeing these days. For the benefit of us all we need to fix that.

Windows 8 Game Development Links

Tara Walker is running a series based around MonoGame.  (Updated: 8/26/2013)
My good friend Lindsay Lindstrom has started a series on creating Windows 8 games on her blog.
My friend Edwin Guarin (I used to call Edwin my “work son”) has started a new series with

Thursday, January 24, 2013

CSTA K-12 Computer Science Standards correlated with the Common Core

This is a big deal. With so much attention being focused on the Common Core for education these days understanding where Computer Science fits takes on some increased importance. I did mention this work by the CSTA earlier in an interesting links post (Interesting Links Post 21 January 2013) but decided that posting a stand alone topic would be a good idea. The following is from the email that was sent to CSTA members on their mailing list. Some of you teaching CS are still not members. hint hint

With the increasing focus on assessment and various national standards, computer science teachers have come under increasing pressure to demonstrate the extend to which computer science courses addressed other standards.

To help teachers, administrators, and policy makers see how computer science addresses a wide variety of standards, the CSTA K-12 Computer Science Standards have now been correlated with the Common Core State Standards, the STEM Cluster Topics, and the Partnership for 21st Century Essential Skills. The downloadable documents that match the CSTA standards to the above national standards (as well as the complete CSTA Standards) are available on the Curriculum webpage of the CSTA website at:

These "crosswalk" documents will be exceedingly helpful to classroom teachers who are asked to state how what they teach reinforces national standards.

Be the first in your school or district to check out these useful crosswalk documents and put them to good use.
Then spread the word!

Tuesday, January 22, 2013

Teacher as Opportunity Activator

Yesterday I tried out a little web site called Name Tag Analyzer  that looks at your LinkedIn information (this assumes you have a Linked In Account of course) and comes up with what should be on your name tag. For me it came up with Opportunity Activator which I actually think is pretty cool. Helping people find and take advantage of opportunity is something I have long tried to do. As I thought about it more I realized that being an Opportunity Activator is a big part of what teachers do.

This is about as true as it can be with computer science education. With free tools, access to cloud computing for storage and computing, and inexpensive personal computing power it has never been easier to learn computing, to create computer solutions and especially never easier to start a computer based business.

Recently I started a project with some people from Seton Hall University and a high school local to them. Rob Miles and I (That’s us below – I’m the short guy) are developing some curriculum teaching programming on Windows Phones. The students are in the picture on the right below. Rob took it from a Skype conversation during the program kick off.


It’s a pretty exciting project in large part because of the particular opportunity for these students but even more so because there are hopes that if it works it can be expanded to other schools around the country. Not every student gets the opportunity to learn computer science though. That is a real problem. We need to activate that opportunity for more students.

Note that the Name Tag Analyzer site is far from scientific and in fact it comes up with something different just about every time I try it. But it was fun and it gave me something to think about.

Monday, January 21, 2013

Interesting Links Post 21 January 2013

One week until I face a new group of students. Unlike classroom visits in recent years these students are “mine” full time for a semester. Excited to say the least. For now I have a few interesting links to share.

The Computer Science Teachers Association has developed a document on CSTA K-12 Computer Science Standards that is the go to place for looking at computing curriculum for K-12. With a lot of other national standards out these days the CSTA has released a series of documents that links the CSTA standards with several other standards.

Linking CSTA Standards with Other National Standards
When designing state and district standards and school courses and curricula, it is often helpful to know how the CSTA K-12 Computer Science Standards correspond with other common national standards. To help with these efforts, we have created a series of downloadable documents that match the CSTA standards to the following standards documents:

  • Common Core State Standards
  • STEM Cluster Topics
  • Partnership for the 21st Century Essential Skills

Also from the CSTA last week was information about  a Game Design Competition: The National STEM Video Game Challenge via the CSTA blog

Computer Programming For Kids 8 And Up A story on NPR.

Girls and Games: What’s the Attraction? via @zite

Take safety precautions online as seriously as you would in the real world. Here are 6 steps to help protect your computer.

Microsoft Achieve 2013: EduTech Family Summits for teachers, parents and students. Coming to a city near you.

Next App Star: See your app featured in a Windows Phone TV ad via @windowsblog

Microsoft reveals new Windows 8 app developer contest via @zite

Friday, January 18, 2013

Microsoft Achieve 2013: EduTech Family Summits

A friend asked me to pass this along so I am doing so. I’m hoping to make the event in Boston (Boston – January 26, 2013 Register now!) which is coming up soon myself.

Microsoft Achieve 2013: EduTech Family Summits  for teachers, parents and students. Coming to a city near you.

Come and learn how technologies such as Microsoft Windows, Office 365, SkyDrive, Bing, Skype in the classroom, and Kinect enhance not only what our students learn but how they learn. You'll also discover how the Microsoft Partners in Learning Network and the Innovative Educators program can help you make the classroom a dynamic and fun learning environment that increases student engagement. Sessions include:


For Students and Parents

  • Preparation and Transition for College and Careers
  • The Secret Lives of Teens  Online

For Educators

  • The Modern Classroom
  • Windows in the Classroom

For Everyone

  • Searching for Results
  • Its Easy in the Cloud: Teach and Learn with Office 365

At the EduTech Fair you will get hands-on experiences with innovative technology, learn more about key programs, and ask questions. Students, parents, educators, community leaders, and local government representatives will be participating in these exciting one-day events. Make your voice heard and register today for one of our upcoming events!

Boston – January 26, 2013 Register now!

Summits will be coming to the following cities:

  • New York, March 2013
  • Washington DC, April 2013
  • Chicago, April 2013
  • Las Vegas, April 2013
  • Dallas, May 2013

Registration will begin in March 2013.

Questions? Email

Thursday, January 17, 2013

Back To The Classroom

The last few months have been interesting as I’ve been looking at different career options. One of the things I realized right away was that I missed teaching. But of course the middle of the school year is not the time to look for teaching jobs. A couple of weeks ago though a school I used to teach at found themselves in need of a replacement computer science teacher because of a sudden vacancy.  Long story short earlier this week I accepted a semester replacement position at Bishop Guertin High School.

I start later this month and will be teaching a Visual Basic course, a C# course and a couple of sections of Basic Applications/Microsoft Office. I’m pretty excited about this. Over the last few years I have had the chance to meet and learn from a lot of outstanding teachers all over the country. It’s given me a lot of ideas and I am going to try and put many of them into practice.

With any luck at all this will give me a chance to report on some of what works and what doesn’t work for me is some future blog posts. It’s too early to tell how this work will impact blogging other wise but I will do my best to continue to share when I have something worth saying.

Monday, January 14, 2013

Interesting Links 14 January 2013

It's half way through January. How’s it going so far? Been interesting for me so far. Hope to have some news about my future plans soon as well. For now, always looking for interesting resources, articles, events, and what not for computer science teachers. here now this week’s list.
I can’t vouch for the accuracy of this  Academic Ranking of World Universities in Computer Science – 2012 But it was an interesting read. I was surprised to see how many universities from Israel made the list. It’s a pretty small country to have that many top CS schools. The US as you might expect dominates the list though.
Students Create, Program Original Ed-Games via Doug Bergman and Porter-Gaud School is a write up  by Grant Lichtman @GrantLichtman about some of the projects that are going on in Doug Bergman’s classes. Doug is a great guy and an outstanding teacher. I love the term “structured but chaotic” that Doug uses.
Awesome video about the work being done by Lou Zulli and his students.  Lou has his students doing real projects that not only teach a lot but benefit the school they attend.
The Pros and Cons of Computer Labs mostly for general education but has some relevance for teaching technology as well. Is it time to revisit the whole idea of dedicated computer labs in schools? If so to be replaced by what?
From Logo > to Kodu > to Mobile Phone Applications is a post by Ray Chambers that talks about his personal teaching journey from Logo to Kodu to looking forward to Phone development.
A couple of looks at what software development is like in the so-called real world:
Alice and Scratch lovers: Here is a competition to create a story or game about having super powers!
Your Subject Association Doesn't Need a Web Site in which Doug Peterson @Dougpete talks about alternative ways an organization can build up their Internet footprint, communicate better all without the need for a traditional web site.
Why American Students Are Trailing in Computer Science An interesting opinion piece on the Huffington Post via @HuffPostEdu

Friday, January 11, 2013

STEM Modeling Challenge–Florida Virtual School

I saw this announcement on the Advanced Placement Computer Science teacher forums and thought it worth sharing.

Let’s Raise the Bar for STEM Education! 
Whether you are interested in Science, Technology, Engineering, Art, or Math,
enter the STEM Modeling Challenge©!

Florida Virtual School is sponsoring the STEM Modeling Challenge, an academic competition in which high school students explore a STEM related problem with the opportunity to win cash prizes.  There will be five rounds lasting approximately 20-25 days each in which students complete a specific task in science, technology, engineering, mathematics, and art to come up with a solution to the STEM related problem. During the final round, students will apply their accumulated knowledge from the previous tasks and write a computer program to develop a simple predictive model.  This should be of particular interest to students taking introductory and advanced computer science courses.

One of the goals of the STEM Modeling Challenge is to promote awareness and interest in computer science in support of the Common Core Standards and the College Board's efforts to promote STEM education.

Please help us spread the word and share this information with your students.  The deadline to apply is January 31, 2013.  Further information can be found at

Thursday, January 10, 2013

Sometimes It’s the Little Things

I’ve been doing some things with Windows Phone development lately and having some fun with it. Being a long time conventional application developer I am finding some things that are in some ways small differences but in other ways potentially larger annoyances. I’ve learned over the years that something that is mildly annoying when done rarely can became a big annoyance when done often. This is something software developers have to be aware of when developing applications. Always keep the user in mind. Let me give you an example that working with Windows Phone apps showed me.

I’ve got a demo program that adds two numbers. Yes I know but bare with me a minute. I tap on a textbox and the in-screen keyboard pops up as follows.


The first thing you realize is that this is the alphabet and we want the user to enter numbers. The user has to click/press on the little button labeled “&123” to get the numeric keypad so they can enter digits. Not a big deal but it will get old very quickly.

What we as developers want to do is make sure the right keyboard comes up first thing so we can make our user’s life as easy as possible. The Widows Phone (and I assume other phone) SDK supports several initial keyboards for making it easy to enter data. How do we make sure the right one opens?

imageFortunately there is a property for that. It’s called InputScope and it allows us to specify what sort of data is going to be entered in a text field so that the system can bring up the right keyboard.


As it turns out there are a large number of possible values for InputScope. Most of the commonly used values are grouped in a section called Common and include Number,  Password, URL, EmailUserName and of course Text.

Since this is a property the programmer can set this once during development and not have to write any code to make it work. On the other hand if you use a text box for different things depending on context of the program you could change the InputScope using code to make sure the right keyboard appears when the user needs it.

Many users are intimated enough by new apps without making things harder for them than necessary. Little things add up.

Tuesday, January 08, 2013

Reversi Sample Code

reversiOne of my earliest attempts at programming a computer to play against me was a version of Reversi I attempted some30+ years ago. Reversi is a great game for this as the rules are pretty simple. It is reasonably easy to determine the legal moves for starters. Not as easy perhaps as checkers but still pretty easy. Strategy is a bit more work than just picking a random legal move. Back then the graphics were ASCII and pretty basic. There was no mouse let along touch screen for indicating a move but none of that mattered.. I was interested in programming the strategy!

I’ve tried again now and again over the years but not for a while. Yesterday I came across a Reversi XAML/C# Windows Store Sample Game thanks to Coding 4 Fun. This is a fully blown fully functional Reversi game for the Windows Store (in other words what used to be called a Metro app) that runs on Windows 8 and Windows RT.

It’s one of those samples apps that works hard to demonstrate a whole lot of concepts and ideas. That can make reading the code a bit daunting especially for beginners. But I think doing so can be very worthwhile as a learning experience. I can is it as a larger project case study. I can also seeing it used as a base for trying to understand a bit about artificial intelligence.

You see the game is very compartmentalized and well organized. You can easily isolate the existing AI and either understand how it works (some good comments help) or replace it with your own.

There is also some good documentation at Developing Reversi, a Windows Store game in C# and XAML (Windows)

Monday, January 07, 2013

Interesting Links 7 January 2013

Everyone back at school yet? A lot of universities are not while other have short January terms. Most K-12 schools in the US though are back. Some have started a new semester while others are finishing up their first. Either ways the days are getting longer. Smile 

Late in the day on Friday I posted Nerd Score, Geek Code and Over Reaching the Geek I wish I’d waited to post it as Friday, even early, is not a good time to post something one wants to get any attention.

A couple of important things from the CSTA – Computer Science Teachers Association

My friend Tara Walker continues her series on Windows 8 Game Development using C#, XNA and MonoGame 3.0 with the latest article on Updating Graphics

The Computing Educators Oral History ( ) site has been updated.

The SIGCT newsletter for ICT and CS teachers is available. Lots of news about ISTE, TCEA and FETC

Towers and laptops and tablets – oh my! is a great post by Garth Flint that talks about the issues of what hardware to get for schools. More complicated than some outside of education think really.

Alan Shepard Technology in Education Award The Award recognizes outstanding contributions made by technology personnel or classroom teachers to technology education. The Alan Shepard Technology in Education Award rewards excellence in the development and delivery of technology programs. Programs which focus on aerospace and/or aeronautics will be given priority to other programs.

Kicked off Facebook, pre-teen creates his own social network via @todayshow

The Raspberry Pi Education Manual Teaches You Basic Computer Science Principles 

My  We Need More Operating Systems post had a ridiculous number of views last week. While there were an encouraging 11 comment here at the blog there are a great many more (95 or so) at Hacker News which is where the post got all the attention.

Yay for Recess: Pediatricians Say It’s as Important as Math or Reading I’ve long wondered if we’d have fewer behavior issues and more learning if kids had more time to blow off steam.

Friday, January 04, 2013

Nerd Score, Geek Code and Over Reaching the Geek

I am nerdier than 85% of all people. Are you a nerd? Click here to take the Nerd Test, get nerdy images and jokes, and talk on the nerd forum!The other day I was bouncing around the Internet an came across of quiz to compute ones “Nerd Score.” It was a fun little quiz and I knew I’d come out fairly nerdy as these quizzes tend to run. It reminded me of the old Geek Code that was popular earlier in the life of the Internet back when the world wide web was new. My geek code is at the bottom of this post and you can “translate it or generate your own at The Geek Code : online codec in English, French, Fran├žais ++ evolution 2010 among other places. Since the code was last updated in 1996 one could be pretty geeky and not know about many of the items in the list.
As I was doing this I was thinking though that these sorts of quizzes and codes send messages and I am no so sure they are good ones. I don’t just mean that there are intrinsic biases (you’ll score more nerdy for using a Mac than Windows and more nerdy still placing Linux over Mac) towards specific technologies. Rather they promote computing as an insider game.
In the early days of the Internet when computers were still mostly kept in isolated chambers and managed by a sort of priesthood there was some value (perhaps) in showing off how much of an insider one was to establish some credibility. But today I believe we want a more inclusive world of computing. We don’t want or need everyone in computing to have their whole live revolve around the latest hardware and software combination  We don’t want an exclusive club of uber nerds.
Any group gets what they reward though and a special geek code or high nerd score if taken too seriously becomes a reward for some and an  exclusion for others. This is especially important in schools were we win or lose many students.
For a teacher I believe it is important to reward the girl who comes in, gets her work done and handed in right and in time after working a reasonable amount of time as much, perhaps more, than the geeky boy you can’t chase out of the lab but who always turns things in at the last moment having worked way too many hours on it. Working hard and smart is in many ways much preferred to working long and hard and fly by night. Yet who gets the attention?
How we reward and encourage the student who doesn’t want to be the next great super geek but who wants to be quietly proficient and competent is important. It bares thinking about – a lot.
  Version: 3.12
  GCS d+ s: a++ C+++ UO-- P+ L-- E- W+++ N+ o K++ w+++
  O- M V+++$ PS+ PE Y+ PGP t+ 5+ X- R* tv+ b+++ DI++ D--
  G e+++ h--- r+++ y+++

Wednesday, January 02, 2013

Avoid Puzzles in Code

I keep seeing a lot of order of operations “puzzles” in my Facebook stream. The most recent one was 6/2*(1+2) = ? or
A lot of people got it wrong. As you might expect the two answers I saw most were 1 and 9. Nine being the correct answer of course. I suspect that people remember the order of operations incompletely. That is to say that they know the order as Parentheses, Multiplication, Division, Addition and Subtraction. They add 1 to 2 getting three and then multiply 3 by 2 because “multiplication comes after parentheses and before division.” That is wrong though because multiplication and division are at the same level of order so the steps become left to right.
Six should be divided by two before that result is multiplied by 3. This gives the correct answer of nine. This could all be avoided by the use of one more set of parentheses: (6/2) * (1+2) is so much more clear and so much less ambiguous.
Now someone who is deeply immersed in math is not that likely to have a problem doing this correctly but most of us are not that immersed. In fact most of us really don’t want to have to think this deeply about the math. This is especially true in programming where we have so many other weird things to keep track of.
The rule of thumb for coding should be “don’t make the reader have to think anymore than absolutely necessary.” That means use parenthesis to avoid anyone having to think hard about order of operations. Some programmers like to show off how clever they are and do all sorts of tricky things. I think we need to instill the idea that smart programmers write code even a beginner can understand.

Tuesday, January 01, 2013

We Need More Operating Systems

Pure opinion post here. I have never been a big fan of the operating system mono culture. In my first job out of college I worked for a company that developed applications for three different operating systems – OS/8, RSTS/E and RT-11. They had some similarities to be sure as both were developed by the same company. They had some differences as well. On one of them the default editor used the command “d” for display. On the other the command “d” meant delete. Yes that made life interesting. Internally there were a lot of other differences as you might imagine.
Later I went to work for Digital Equipment, the company that wrote the RSTS/E and RT-11 operating systems where I soon became somewhat fluent in RSX-11M, TRAX, TOPS-10, TOPS-20 and VAX/VMS. The hardware architectures involved 12 bit, 16 bit, 32 bit and 36 bit words. I became somewhat familiar with assembly languages for all of them. It was a wonderful time. I also ran into UNIX for the first time. It was almost as good as the worst of the other 8 operating systems I worked with. Sigh. I never expected it to last. Shows how good my predictive skills are.
Other companies were also working on their own operating systems. IBM had several. HP had several. Data General had several. And so did other companies you have probably never heard of. A lot was going on in operating systems. Software including the OS was a differentiator.
I remember one funny story that may or may not be  true. I’ll leave out the name of the company since they are no longer in the computer business. A technical person was giving a presentation on some new computer hardware to a potential customer. Several times questions where asked and the reply was “we’ll talk about that when we talk about software.” At the end of the hardware presentation one of the listeners said “that is amazing. I don’t know why everyone doesn’t buy your computers.” A voice from the back of the room said “we’ll talk about that when we talk about software.” It was a different time.
Today, for most people, on personal computers there is a choice between Windows and some flavor of UNIX with a pretty shell over it. Mac OS or Linux or FreeBSD and the like are based on UNIX. There is not much incentive to create a new operating system. After all you would have to compete with an OS that is firmly entrenched on 85-90% of desktop systems on one hand and a free operating system on the other. Most people take the easy way out and build on top of Linux.
In hand held devices there is also a choice between Windows derived OS and UNIX derived OS but several smaller systems are developed based on other OS families. Wikiepedia has a comparison of mobile OS that includes information on OS families. There seems to be more innovation going on there especially with the user interface and with modifications needed to support the more limited hardware capabilities of handheld devices.
This this set of differences is frustrating for app developers I believe it is good for over all innovation in operating systems. Ultimately I believe that consumers are better off when companies have to compete on both better software as well as better hardware. For the near term I see most OS innovation happening in the mobile space. Some of it will migrate to desktop systems as touch interfaces are already. Some will not.
I expect some innovative OS research is being done in universities. I hope so anyway. How much of it will wind up in real systems is anyone’s guess though. With the operating system becoming less and less important for most average users there isn’t the same incentive for companies to adopt new technology these days. Well unless it saves battery life or electricity.