On learning (Calvin and Hobbes, the ACS and digital natives)

Digital natives learn differently. How do we take advantage of that?

The funny thing is that right away, I've written this from an external perspective, when I'm probably in a mixture of both camps. Feel free to consider me in either camp as you read this.

At TechEd Australia this year, the keynote was from Anne Kirah. She talked about the concept of the digital native. That's someone who has grown up in a technology culture, and therefore thinks differently to someone who has grown up in a non-technology culture and come into it. I was born in late 1974, and I grew up without being surrounded by technology, although at the age of 8 or 9 I got a C64 and started writing code, doing my homework on a computer, thinking about ways to use a computer in better ways, for better purposes. I've never really considered myself a geek, because I'm actually far more interested in people (although not how to use people in better ways for better purposes, <insert evil laugh> well, not really). But I do find the cross-over between technology and the rest of the world fascinating. I certainly enjoyed Anne's talk a lot.

I'm also a fan of learning. If you have read my blog in the past, then you will appreciate that I have done a lot of Microsoft Certifications, I run a user-group, I have a few degrees, I'm generally a big fan of the whole learning experience.

But more than being addicted to learning, I'm very interested in the study of learning. My wife did part of a Bachelor of Teaching, and I really enjoyed having conversations with her about the different things that enabled or hindered a child's ability to learn. Now, several years later, we have our two sons at a boys' school, because we appreciate that boys learn very differently to girls, and that teachers seem to be far more able to cater for the boys in the class if there aren't a bunch of girls in the class, accentuating the differences between the two.

Just as there is a difference between the way that boys learn compared with the way that girls learn, there is a difference between the way that 'kids these days' learn. And when I say 'kids these days', I largely mean 'digital natives'.

On Thursday morning, I saw this Calvin and Hobbes cartoon strip. I apologise if I'm breaking copyright by posting this here – but hopefully you'll all be inspired by this go and buy a book of C&H – it's well worth the investment.


Just like Calvin, digital natives hate the idea of sitting in school. I'm the same, with some differences. I love being in a learning environment. I'm very happy to go to a lecture. But I need to be able to ask questions. If I can't have the learning experience be more like a conversation, I'm frustrated. People who were at the SQL Code Camp in Wagga Wagga earlier this month will have seen evidence of this.

At the ACS SA Branch AGM on Wednesday night, we heard Dr David Lindley talk about some of what he does in the Professional Development programs that the ACS run. He talked about the fact that the system they find very effective is to have people post opinions on matters, and then once everyone has submitted their ideas, the ideas become public (within the group) and people discuss them. Sounded like a blog to me, but David suggested that the differences are massive because the initial feedback on the post is from an appointed mentor, not the wide community. I really liked his opinions on learning through discussion though. I think the opportunity to learn is primarily through the discussion, rather than through submitting thoughts on a matter and then having them 'marked' by a 'mentor'. I think a mentor should guide learning, but not necessarily teach. But more on this later.

A quick point about blogging. I think there's a massive benefit to blogging from a learning perspective. When you write your ideas down, they solidify much more in your head. This is partly down to the principle that when you teach someone something, you have to know it so much better, but it's more just that in writing it down, you see things from a different part of your head to when it was just a thought. But there's more opportunity to learn from blogs, as I'll write later.

Many digital natives are finding themselves getting into the IT space without first going through the university system. They grok computers already, and can't see the relevance of sitting in lectures to learn things that may not be relevant to their careers. Their opinions about learning is based on what they know from school, and it's just not cutting it (I can make similar arguments for God and the church – you don't need to get me started on that to be able to quickly see the parallels). If you were to suggest that they enter any kind of formalised learning program, they'd laugh. These people are even against Microsoft Certifications, because they have become so prejudiced against learning because of school.

Let's address Calvin's problem first. He wants an environment where he doesn't have to learn anything. Where there's no teacher and no other kids. I'm sure when Bill Watterson wrote this strip, he wanted to list every aspect of school. His point would have been "Calvin just doesn't want to go to school". But we see elsewhere that Calvin is interested in learning. He asks his dad questions (although his dad doesn't give him the right answers), and talks about quite deep things with Hobbes (who of course is his imaginary friend).

Perhaps the fact that Calvin's dad gives him the wrong answers is part of the reasoning behind David's consideration that the primary feedback should be from a trusted mentor. I offered to be a mentor in David's program, but apparently I'm too young (I'll be 32 in early November). More on this later too.

As someone interested in making sure that Calvin is able to learn effectively, we need to find a way of having him learn without being at school. I'm not saying that home-schooling is the answer for kids, I'm just saying that learning cultures are changing and this needs to be addressed.

Paul Stovell is a good friend of mine. In some ways, I mentor him. I learn a lot from him too. He has just turned 20. He will never go to university (he's actually not opposed to the idea, he just can't see the relevance). But he's starting to realise the power of blogging, as he writes in his article at http://www.paulstovell.net/Posts/Post.aspx?postId=b07d1424-ae9a-40e6-881a-d22fc28de646

Paul has found that if he writes on a topic, the community of his peers who read his blog comment on it, tell him where he's wrong, expand on his ideas, and together, they all learn something. Naturally, this being open to the entire internet, there is a risk of people writing rubbish. But the opinions that Paul values more than the others are the ones to which he pays the most attention (and typically, these people are slightly more experienced than him, but within a similar culture, rather than being people who are necessarily older and wiser – useful mentors, but perhaps not the types of people who would be a traditional choice of mentor). Of course, by writing in the public domain, you also have the opportunity to release your thoughts to the people who are the experts in the field, and this then present an even bigger opportunity for mentoring.

So Paul has a way of learning without going to school. Of course, it's a learning environment that he's driving himself, but Paul could just as easily become part of a learning environment that was slightly more structured, in that it suggested discussing particular points.

This is more like what David is doing. He facilitates discussions about the topics, guiding people in what they need to be learning.

You see, IT present the opportunity to allow people to learn in a manner which suits them. I think David could take it much further again, but there is a risk that fall into the trap that many home-schooling parents find themselves in – that much of the syllabus can get missed.

Developing a learning culture for digital natives (which would include many of the highly skilled people in IT) is a massive challenge. I love that the ACS is trying to find ways to address this, and if I can help them develop their ideas, then I will do so. Microsoft Learning are also trying to address it, with a move towards e-learning, away from instructor-led courses.

The biggest opportunity here is that the IT Industry is full of people who have been digital natives longer than anyone else. I don't mean people in their 50s, I mean people in their 20s and 30s. If we can work out how to teach these people (including myself), then perhaps the rest of the education industry can see what we are doing and apply the same to non-IT learning. Kids learn history by playing computer games already, but there needs to be more to it than that, so that they realise they are learning and can start to love the learning process.

The fact is that digital natives won't do school. But they still want to learn. If we want to be a part of that, we need to reinvent school. The burden is on us, because traditional learning cultures have hurt education significantly.

PS: This doesn't cover anything about assessment, such as the concept of MS Certification exams – that's a whole nother topic as well.

What's wrong with IT?

To a large degree, it's the perception of experience. The IT industry has so many things wrong with it. It tends to be 'governed' (I don't know of a better word for what I mean there, 'run' would be wrong) by people in their 50s. It's also full of Cowboys and Indians (and I don't mean 'people from India' here, I mean 'people who will work for a pittance'), and this means that some degree of governance is actually quite important.

My blog post about "How they know you know" really is a much bigger factor than assessing a candidate or helping your CV stand out from the rest. If you consider the insurance agency who need to work out how much professional indemnity to cover people for, then that helps to start consider the size of the problem. If someone's going to trust their critical data (or processes) to you (or a company for that matter), they need to be quite sure that you're not going to break everything.

If there was a boom in the health industry like the .com boom of the late 90s, you'd see hospitals popping up everywhere, full of people who had no clues about what they were doing. But would you go to any of them? No of course not… you wouldn't dream of letting someone operate on you if they didn't have the proper credentials. And yet we in the IT industry perform surgery on people's businesses on a daily basis.

The ACS is really great in that it is trying to govern the industry in some way, but in many other ways, I think they need shaking up a bit. The ACS encourages Professional Development (which is often sorely missing in professionals). They encourage community (they sponsor several special interest groups). They are active in campaigning to government and other industries of the virtues of IT. All great things, which a younger crowd might not do. But that's part of the problem. The people that run the ACS typically aren't the younger crowd.

I don't want to come across as ageist here. These people have learned a lot over their years in the industry, and really have a lot to give. They are probably the ideal crowd to be doing this type of thing. But if the perception of them is that they are irrelevant, don't understand the later generations (let alone their technologies), and are just 'governing' for the sake of it, then half the battle is lost already. And if any of this is actually true, then that's even worse.

And of course, if they are perceived this way from within the IT industry, then our industry is already a house divided against itself, and it's got no chance. Law, Accountancy, and all the other professional industries are united. They ALL get the relevant certifications and hold them dear. That makes them stronger. A lot stronger. As industries they are far more united than IT. IT can't even agree between "pro-Microsoft" and "anti-Microsoft", but that's a whole nother post.

Is the ACS the right conduit for this stuff? Well, I think probably. Who else would you pick?

And if you consider that the ACS is the right conduit, then you have to get involved, to help them change the way they're perceived, and to help them achieve their goals, which ultimately help all of us in IT.

"Blog" misspelled!!?

I have Firefox 2.0 installed, with its built-in spell-checker. Now apparently when I say 'blog', it thinks I must've meant one of log, bog, slog, clog or flog. I've added it to my dictionary (which is "English (Australian)", by the way). I also have American and British installed, just like I have the English keyboard layout installed as a spare, so I can easily switch and type £ quite easily. 🙂

Javascript's getYear() function, and other IE headaches

Someone I know came across this gem. I guess it's well publicised, but if you haven't come across it before, it could easily catch you out.

The interesting thing is that IE will give you 2006 for getYear(). That's wrong. It should give 106 (as per http://www.w3schools.com/jsref/jsref_getYear.asp). The correct function to use is getFullYear(). But of course, if you develop for IE primarily, you'll find this and think that other browsers are wrong. Then you'll put stuff in place to detect which browser you're working on, so that the 'buggy' other browsers handle the JavaScript correctly. Then some future version of IE will fix it, and your code will break within IE.

I have come across a menu system a while back that doesn't like IE7 because they had an IE-specific version of their code. Personally, I prefer to write for Firefox first (I find that Firefox has tended in the past to be slightly closer to the W3C standard), and then work on any code that doesn't work properly in IE, so that it displays correctly in both browsers WITHOUT having to have browser-detection. It can be hard, but it's definitely doable. I think it's much safer to stick as close as possible to the standard (but I do appreciate that this is a nice 'theory', and shouldn't be an enforced rule).

Correction: That page gives you the value that the current browser will give. Seems here, Firefox is wrong, as per the description of the function 'it should return 4 digits'. I had browsed to the page which said "this will give you 106", and figured it was correct, when actually, that was a browser quirk. Oh joy!  (Thanks Alun)

Another correction: Seems that JavaScript 1.5 is supposed to give 106, and JavaScript 1.2 and earlier are supposed to give 2006 – http://developer.mozilla.org/en/docs/Core_JavaScript_1.5_Reference:Global_Objects:Date:getYear – but either way, it's deprecated, and getFullYear() should be used instead.

The horror of daylight savings (sorry Perth)

I have friends in Perth, who I have always envied for the fact that they don't apply daylight savings there.

For anyone who somehow has no idea what I'm talking about… because the days are long in the summer, many countries in the world apply 'daylight savings', to effectively shift an hour of daylight from the morning (when people are typically still asleep) to the evening (when people are still able to work). When winter comes around again, they adjust back to 'normal', and have a day centred around noon again.

Personally, I wish the world would just say "Hey, it makes much more sense for us to be centred around 1pm. The working day (9am-5pm) is centred around 1pm, so let's make our timezone match that being the time that the sun is at its highest too." Then we could abolish daylight savings. It might make for winter mornings when the sun doesn't come up until after we're at work, but how is that much different to having the sun go down at 4pm? Much easier if you live near the equator and have days that much more consistent in length. I have a cousin who lives in the Shetland Islands, where at Christmas the sun doesn't quite come up even at noon.

And now Western Australia (the state that contains Perth) is looking to introduce daylight savings. Of course, much of the population is rejoicing. They want to have the hour of daylight shifted from the morning to the evening. They don't want to be woken up by the sun streaming through their windows at 5am – they'd much rather have it stay up until 8pm in the evening.

But pity all the people who ever use computers, and have no idea of the luxury they've always had by not having a timezone adjustment.

Oh I know… Windows is really good this way and will adjust your timezone for you twice a year. Microsoft even bring out patches to fix up Australian computers when the government decides to change the system for the Olympics or Commonwealth games. I'm sure Microsoft will roll its collective all-seeing eyes and produce a patch for Perthites. If not, Michael Kleef will write one himself!

But what does this mean for all the code that was written without considering daylight savings? Surely the fact that you never hear whinges from developers in the rest of the world about daylight savings?

Well, you actually do. It's one of those things that people just live with. But the nightmares caused by daylight savings are many.

So, consider the situation where your server changes timezones. You might have a 2-minute-long event which started at 00:59 and ended 02:01. Or which started at 01:59 and ended at 01:01. Does your code handle that? Do your clients mind if you're working around the clock on something but the timeline suggests you all took an hour off in the middle of a crisis?

Or, consider the situation where your server doesn't change timezones. People start whinging that 'current time' is displayed wrong on the web server. So you translate everything into the user's timezone, but now when they look for that event that occurred at 5pm on a particular day 6 months ago, they can't find it, because they've changed timezone since then and the history figures it must've happened at 4pm.

What happens to the overnight staff who work for that extra hour in Autumn/Fall, or work an hour less in Spring? Do you pay them for that time? The system says they clocked in at 10pm and left at 8am, same as always… Or else they actually have worked an extra hour and break various industrial relation laws. Not to mention the disgruntled person who feels that they've been forced to work an hour less…

People typically make the decision one way or another and just live with it. But poor Perth – they had the luxury of avoiding daylight savings, and may find it forced on them.

Faster binary converter – where do your solutions come from?

Mitch Wheat is a great guy. He really is. And he's clearly a mathematician.

I mean, I did a half-major as part of my BSc, doing a handful of 3rd year Pure Maths subjects (which I got HDs in too – I wasn't just sleeping during class), but Mitch… he thinks like a mathematician. You can tell when he comes up with a solution like this for converting numbers to binary. Makes me wonder if this is something he came up with, or something he read in a book. Knowing Mitch, he came up with it himself. I'm in a bit of awe here. I feel like it's the kind of solution that I could've come up with once upon a time, and hopefully could still given the right colleagues and a whiteboard. 🙂

Let's come back to the 'solution read in a book' thing.

I remember sitting in a user-group meeting in Redmond in March. Itzik was speaking. He was talking about the use of CLR in SQL, and came across the Product aggregate function. There is no product() in T-SQL, and a lot of people have considered that it's a good candidate for CLR, since you can make a user-defined aggregate function this way. Itzik's lines were something like "And I was sure there was a good way of doing this without having to use CLR, so I got reading my maths books." He mentioned some of the names that I have a vague recollection of from my university days (which I have forgotten again so won't write here), and then said that he came across log(a*b) = log(a) + log(b). And of course, almost everyone in the room had light-bulbs appear.

I wasn't so much inspired by the fact that "here's this great way of solving the product question", but rather "here's a way of solving some miscellaneous thing, where the answer comes out of a maths book." And now I've found Mitch providing me with the same hunger to academise (that's not a word, but you know what I mean).

I nearly got into academia. Having done uni, I had offers to do a PhD. But I had a good job offer, and studying didn't seem like it was going to pay the bills. A large part of me would've liked to have done. I remember being a research assistant for Professor John Crossley at Monash, helping to write code (in CAM/L, using a Tcl/Tk interface) to try to convert mathematical proofs into computer programs (the idea being that if you can prove – using really fundamental principles – that for all x, there exists a number y that has particular properties, then that proof should be able to be converted 'automatically' into a program which will find that y). I found that fascinating. I don't know whether the theory ever got really proven, but I found academia really interesting.

And of course, in the 'real' world, the uses of academia are somewhat doubted. It was good to see a locknote session at Tech.Ed (AU) this year about some of the image processing stuff that Microsoft Research Labs are working on. But I'm also really curious to know about algorithms for solving interesting problems.


Simple recursive CTE

I like CTEs. Mostly because it lets me have a derived table that I can refer to multiple times. I don't often use the recursive features of it. But when I do, I repeatedly feel amazed at the power available.

Today I had a challenge to produce a nice SQL way of converting integers to binary

So I pulled out the CTE. 🙂

with ctebins as
(select num as num_orig, num as working_level, cast('' as varchar(max)) as binval
from nums_bin
union all
select c.num_orig, c.working_level / 2, cast(c.working_level % 2 as varchar(max)) + c.binval
from ctebins c
where c.working_level > 0
select num_orig, binval
from ctebins
where working_level = 0

What this is doing is to populate the top level of the CTE with a bunch of numbers from nums_bin, along with a blank string. I know I don't have to use varchar(max) – it's not going to get that big after all…

Then it fills the CTE with rows using recursion. I keep the original number (to use later), and keep cutting it in half to get the binary number out. Then I query the full CTE for the last level of recursion – when my working number got down to zero.

It works nicely, and it's very fast on a big set of numbers. 


ActiveSync to a new Exchange Server

This week we had a few hassles with our Exchange Server. I don't know the details, but I know that we moved to a new Exchange Server. From an Outlook perspective, this was fine. From a Windows Mobile perspective, it wasn't so great.

The new Exchange Server is in a different domain, so I had to use a different set of credentials to sync with it. I installed the root certificate, did all the right things to get it working, but got an error saying:

Synchronization failed due to a device software error. Contact your network administrator. 0x80004005

Not good. Did some googling, and saw some stuff about getting an End User Update, and other stuff about a hard reset. I tried searching through the registry for something that might've helped… no luck there either. Luckily, I store all my useful data on an SD card, and have a folder with all my app's install stuff. I did a backup to keep the rest of the data safe, and then did the nasty hard reset.

Ten minutes later, I had successfully synced with the server. Half an hour later, I was fully restored. I'm sure there will be the odd configuration setting I've forgotten to make on some application (like the font size in Egress), but on the whole, I'm very happy. Most of all, because I actually have very little fear of hard resets. I know that whenever I have some error that I just can't solve, I can always fall back to "let's try a hard reset" if I need to.


ACS SA Branch Committee

I've been nominated for the ACS SA Branch Committee. I've been a member of the ACS for a few months now – a Senior Member even. But it hasn't really meant a lot so far. As I want to be an influencer, particularly in regards to promoting IT in Adelaide (it's where I live, and I figure that if I can help develop IT as an industry here, then that's good for both me and anyone else who lives here), I had toyed with the idea of joining the committee. Nominations close this Friday, and after checking with Roslyn about the extra night out per month (my time feels quite limited already, but I think this is worth the investment), I agreed to let myself be nominated.

It doesn't mean I'm on the committee yet though. There may be more people putting their hands up than there are spots available, in which case it will come down to a vote. I'll keep you posted.