Defending Canadian Democracy

Post ImageI signed the Green Party petition seeking to have that party included in the televised debates because I strongly feel they should be! I didn’t vote Green last time, and I may not this time either, but I still think that any party with a candidate in every riding should be allowed to take part. If the Bloc Québécois can take part, certainly the Green Party should be able to. Here’s part of an email I got today:

Thanks to the participation of people like you, we now have over 40,000 signatures on our online petition for Green Party of Canada leader Jim Harris to be included in the televised leaders’ debates. The broadcasters are taking notice, but still have not reversed their decision.

Now we need to push that number to over 50,000 people before the final televised debates start on Monday evening. Only 10,000 people submitted questions for the other party leaders in the first debates, so this would mean that five times more Canadians are asking for all five leaders to be in the debate.

Can you help us achieve that goal by asking friends, family, and colleagues to sign on too? Remember, this is not necessarily about supporting the Green Party of Canada, its about defending Canadian democracy!

The easiest way for you to help is to use the new page we set up for this at: http://www.info-greenparty.ca/petition/forwardmsg.asp.

If you’re in Canada and you agree, please sign the petition. I am skeptical that the television executives will change their minds, but stranger things have happened.

How many cores do you have?

This post originally appeared as a guest post on Dave Lucas‘ popular blog, Capital Region People.

Post ImageNow that we’re into 2006, my computer is about six years old. I have upgraded certain components over the years (notably RAM and hard drives) but my original processors are still chugging along – dual Pentium III 600 MHz processors (x86 Family 6 Model 8 for those of you who like details). For the most part my computer is pretty responsive, and I do a good job of clearing up temp files, scanning for spyware and viruses, etc. Certain applications and tasks are starting to be noticeably slower though, which means a new computer is becoming more and more likely. My computer probably is doing things just as fast as a couple years ago, but it seems slower because of all the newer, faster machines I come into contact with. Faster machines that more and more frequently have more than one processor core.

To ring in the new year, Intel launched a massive rebranding complete with new logos and a new slogan, Leap Ahead. The company also announced a new focus and direction; one that includes muti-core processors at its heart. Here’s how Intel describes multi-core:

Intel multi-core architecture has a single Intel processor package that contains two or more processor “execution cores,” or computational engines, and delivers—with appropriate software—fully parallel execution of multiple software threads. The operating system (OS) perceives each of its execution cores as a discrete processor, with all the associated execution resources.

Essentially, more execution cores means you computer can do more things at once, and thus accomplish tasks faster. It was April of last year that Intel released their first dual core processor, and research on new multi-core projects (15 currently underway at Intel) has been feverish ever since. There haven’t been that many dual core processors sold yet, mainly because they are a bit too expensive still. That will change in 2006 though, as Intel forecasts “that more than 85 percent of our server processors and more than 70 percent of our mobile and desktop Pentium® family processor shipments will be multi-core–based by the end of 2006.”

Intel isn’t the only company betting on multi-core technology. In a recent interview with CNET News.com, AMD’s Chief Technology Officer confirmed that the company will be shipping quad-core processors by 2007. AMD has a good description of multi-core technology:

Multi-core processors enable true multitasking. On single-core systems, multitasking can max out CPU utilization, resulting in decreased performance as operations have to wait to be processed. On multi-core systems, since each core has its own cache, the operating system has sufficient resources to handle most compute intensive tasks in parallel.

Improvements are being made in software as well. The current versions of Windows, Linux, and Mac OS X will all be able to take advantage of the improved performance delivered by multi-core processors, and new iterations of the operating systems should improve things even more. Mac users will be happy that Apple is switching to Intel this year, opening the door for multi-core processors in Macintosh computers. Windows users will soon have Windows Vista available which will not only support multi-core processors, but other performance boosting technologies like hot-swappable USB key-based RAM too.

Let’s not forget that other system components are being improved too. The speed of memory, motherboards, hard drives, and other components are all increasing along with processor performance. All this and I haven’t even mentioned 64-bit technology yet! When you step back and look at the big picture, it’s clear that we’re on track for a huge performance boost.

If you’re going to be purchasing a new computer, the coming year is as good a time as any. The new multi-core systems that will be available are a far cry from my pokey old Pentium III’s, even if I do have two! The faster computers will usher in new applications and interfaces that take advantage of the increased horsepower, meaning you’ll see improvements across the board, from hardware to software.

Perhaps a year from now you won’t ask someone how fast their computer is. Instead, you might ask, how many cores do you have?

Windows Vista at CES

It’s that time of year again, when all the electonics manufacturers get together at CES to show off their new wares. Microsoft is busy at the show this year too, showing off some of the new capabilities of Windows Vista. Bringing Vista to life is a short but interesting video that shows off some of the features coming in Vista:

Be one of the first to see Windows Vista in use as Gates and Microsoft Group Product Manager Aaron Woodman show off the slick new OS during the 2006 Consumer Electronics Show.

Aaron shows the live previewing, Flip 3D application switching, the Sidebar with Gadgets, and the new Sideshow feature for notebooks. In another Microsoft video, Bill Gates shows off part of his vision for the digital future. It’s a very cool video – I love the screens!!

UPDATE: The blogosphere is buzzing about Bill Gates’ speech at CES. Watch the entire keynote online!

Pictures from Inuvik

I uploaded some pictures I took while I was up in Inuvik over the holidays. You can check them out in my Christmas 2005 photoset, along with four I took before leaving. This one is good at showing how much snow there was!

Mindboggling – Microsoft buying Yahoo?

Post ImageEvery once in a while a rumor comes along that is so outlandish, so crazy, so never-gonna-happen, that it makes you really hope it does happen! The latest such rumor is that Microsoft offered to buy Yahoo, a rumor that has sent investors into a craze:

Analysts said reasons for the heightened interest in Yahoo call options ranged from recent rumors that software company Microsoft Corp. might be seeking to partner or merge with the Internet company, to bullish expectations for the company’s upcoming fourth quarter earnings report.

“The speculative activity in short-term calls might reflect the recent talk about an alliance with Microsoft,” Ruffy said.

Such rumors have been rampant since Google Inc. recently fortified its lead in the Web search market by taking a 5 percent stake in Time Warner Inc.’s AOL Internet unit.

On Sunday the Los Angeles Times cited what it called speculation that Yahoo had rebuffed an $80 billion bid from Microsoft as too low.

Did you see that? Eighty billion dollars! I can’t quite wrap my head around that amount! According to Microsoft Watch, the software giant currently has about $40 billion in cash.

There’s too much to consider if such a merger were to take place that I won’t even bother unless it actually happens.

Read: Reuters

Back in Edmonton

I arrived back in the city last night around 8:15 PM, which is around an hour and twenty five minutes late – much better than the ten hours late going to Inuvik! This trip was the first of so many to Inuvik that I have encountered trouble with. Seems to me the airlines that fly north have gone soft!

I am almost entirely unpacked, and I slept in today so I am rested too. Time to get back to work!

Predictions for 2006

Post ImageWith the new year fast approaching, I thought it would be a good time for predictions. Not resolutions, but predictions. If you’d like to see some predictions from around the web, Alex Barnett has compiled a very interesting collection. Here are some of my predictions for the coming year, some specific and some more vague, in no particular order:

  1. Canada will win both the World Juniors Hockey Championship, and the gold medal in hockey at the Olympics.
  2. RIM will prevail in their legal troubles and will find success beyond the corporate market in 2006.
  3. The Indianapolis Colts will win the Superbowl.
  4. 2006 will finally be the year of Internet connected devices that make sense, are inexpensive, and are adopted widely. I am thinking of devices like digital cameras, little tablets for living room access, etc.
  5. Toyota will overtake General Motors as the world’s largest automaker, and GM shares will continue to plummet.
  6. Sony will launch the Playstation 3, but due to incredibly high prices, it will not match the success of it’s predecessor, nor the Xbox 360, except in Japan.
  7. The Ottawa Senators will win the Stanley Cup (at least I hope so, if Edmonton can’t).
  8. Windows Vista will RTM in September. Apple fans will claim too much is copied from OS X, and Linux fans will come out with roadmaps to copy all the functionality found in Vista.
  9. We’ll see a new Halo game (Halo 3 maybe) for the Xbox 360 sometime around November.
  10. iTunes and iPod will begin to lose their grip on the digital music market.
  11. Apple will successfully launch their Intel based machines and their market share will reach 6%.
  12. Michael Schumacher will win his 8th world drivers championship and then retire.
  13. A major security/antivirus/antispyware company will launch a lawsuit against Microsoft over Windows Vista, Windows OneCare, or other competing products.
  14. Movies, television shows, and other forms of video content will be sold in big numbers online in 2006, with almost every major content company taking part.
  15. Someone is going to buy TiVo before the year is over.
  16. The Liberals will once again win the upcoming Canadian election.
  17. It’s not really my prediction, but I agree with John Battelle who thinks Google will stumble in 2006.
  18. The Da Vinci Code will be in the top three movies at the boxoffice.
  19. The United States will invade Iran.

And in my final prediction, I am going to disagree with Jason Calacanis, who made the following prediction on December 27th:

12. No podcasting company will have any significant success in 2006, but a number of podcasters will be offered great jobs at Sirius and XM Radio.

I am going to predict that at least one company will be successful in 2006, and I fully intend to have Paramagnus be that company!

JavaSchools are not the problem

Post ImageJoel Spolsky is one of the most famous and respected software development commentators, so when he writes an article, it is usually a good idea to take notice. His latest article, The Perils of JavaSchools, was published today and is definitely worth reading. I think Joel makes some good points, but I don’t agree with his entire argument. I don’t think JavaSchools, as Joel describes them, are the problem.

First, Joel mentions that in the old days programmers chose C as their language of choice whereas now they choose Java. His first claim is that Java “is not, generally, a hard enough programming language that it can be used to discriminate between great programmers and mediocre programmers.” He goes on to say that pointers and recursion, two of the most difficult concepts to understand, are no longer taught in so called “weed out” courses.

The lucky kids of JavaSchools are never going to get weird segfaults trying to implement pointer-based hash tables. They’re never going to go stark, raving mad trying to pack things into bits. They’ll never have to get their head around how, in a purely functional program, the value of a variable never changes, and yet, it changes all the time! A paradox!

The first problem with this argument is that pointers are rarely required anymore, and functional programming just isn’t used much. Joel himself identifies both of these facts. He also mentions that to work on an operating system, you pretty much have to understand pointers. That’s the second problem – while that may be the case today, it probably will not always be the case!

I don’t think that a programmer has to learn a really hard language with really hard concepts to be a great programmer. I don’t think it matters much if someone is an expert at recursion and pointers, or if they are an expert at object oriented programming instead.

How is anyone supposed to learn anything if the curriculum has been carefully designed to make everything easier than it already is?

I don’t think that you need to learn the hard way in order to learn anything.

The fact is, things are getting easier than Joel makes them out to be. Managed code is quite a bit easier to write than traditional unmanaged code, but that doesn’t mean it is limited. There is already a research project at Microsoft to build an operating system using managed code (almost entirely). And we’re inching closer and closer to a time when efficient programming is more important than figuring out all of the different ways to solve a problem and then finding the fastest one, or the one that uses the least amount of memory, or separating them on some other heuristic. We’re going to need rapid application development to get things done quickly.

Consider manufacturing. Do you have to know how all of the little pieces work together in a widget in order to make a useful contribution to the team building that widget? What if the widget has wheels, do you need to completely understand the wheel? All of the angles, the way it works, the problems it may encounter? I would argue that the best way to make a useful contribution is to specialize in a particular part of that widget, or even better, the process of building part of the widget. We’d be able to build far more widgets, far more efficiently, if everyone specialized in something than having to understand everything.

Medicine works the same way. All doctors have to learn the same basic stuff, but then they specialize in a particular field. The difference with computing sciences is that we don’t yet know what that “same basic stuff” should be. Is it object oriented programming, or something else? Certainly the conventional wisdom is that you should learn OOP, and thus we teach Java. The “same basic stuff” has become Java, and I have no doubt it will change again in the future.

Second, Joel seems to suggest that the only good programmers are ones with lots and lots of education.

But what about the CS mission of CS departments? They’re not vocational schools! It shouldn’t be their job to train people to work in industry. That’s for community colleges and government retraining programs for displaced workers, they will tell you. They’re supposed to be giving students the fundamental tools to live their lives, not preparing them for their first weeks on the job. Right? Still.

I can’t understand why the professors on the curriculum committees at CS schools have allowed their programs to be dumbed down to the point where not only can’t they produce working programmers, they can’t even produce CS grad students who might get PhDs and compete for their jobs.

I agree that CS students really should learn to do some actual programming rather than just theorizing about it. I don’t agree though, that a good programmer should be defined by their level of education! I think what needs to happen is a separation of what we currently call “computing scientists.” Those with the PhD’s, and those who like to do the research and try and wrap their heads around weird concepts should be the computer scientists. Those who are trained as good programmers, able to solve problems and actually implement solutions should be computer engineers.

Take my school, for example. We have Computing Sciences and we have Computer Engineering – but the two do not match up to the two types of people I just described. Currently, Computing Sciences encompasses both computer scientists and computer engineers. That needs to change. There should be different curriculum for each.

Joel says:

I’m going back to ones and zeros.

That’s too bad, because Joel is a very smart guy and could probably make a difference in how we move forward. The problem is not with JavaSchools. The problem is that the same school is trying to teach two totally different types of people.

Read: Joel on Software

Birthday!

Today is my 22nd birthday, and although the Oilers lost (4-2), I did get some cool gifts like Wedding Crashers on DVD, and Call of Duty 2 for Xbox 360. I played the first two missions of COD2, and damn, what an amazing game! The graphics are awesome, the gameplay feels very realistic, and everything is fast and streamlined. Could be my favorite 360 game so far!