January 25, 2006

January 24, 2006

  • SwordAngel and Friends is moving!

    Yep, this blog is moving. After a little more than 2 years, I realise that a blog is just not enough. Even now, the blog is already pretty cluttered anyway. Plus, Xanga still hasn’t given us any RSS or ATOM ability. So I registered my own domain name and got a hosting service today. The blog will be moved to the new site and sit together happily with some other stuff (like maybe a bulletin board, a wiki, and actual pages for my projects, tutorials, and essays). The host shall be ready tomorrow. Stay tuned to see the new URL.

    - SwordAngel

January 21, 2006

  • CUSEC 2006

    The 2006 edition of the Canadian Undergraduate Software Engineering Conference opened on Thursday, January 19th. This is the fifth year the event is happening and the number of attendees is on a record high (over 250 students from all over Canada and some from the US). Every year since 2001, the conference creates a great opportunity for the students and the leading figures in academics and in the industry to have a close encounter.

    Beside the number of attendees, other facts demonstrate that CUSEC has become something “bigger”. For instance, this year we have 5 keynote speakers, which is more than the previous editions. The organising committee is also composed of students from 4 universities, as opposed to the 1 or 2 in the past. As a member of the organising committee of the 2004 edition, I can say that I’m really proud of the growth of CUSEC.

    Keynote Speakers

    Dr. Peter Grogono is our very lovable professor at Concordia University. Everybody in computer science and software engineering loves him (even those who have never actually taken one of his classes) because he is like the icon of how real geeks should be: humorous, practical, knowledgeable in the geek issues, smart, and being able to make fun of your own kind. He is a regular at CUSEC and never fails to give an interesting presentation. This year, his speech is titled “Modular Concurrency” and it’s always amusing to listen to him joke about the stupidities throughout the history of programming language development, about how people solved the concurrency problem over 40 years ago and then decided to not use the solution after all, until they step on their own feet today and start to take interest in the issue again.

    Chad Fowler is the renowned author of “My Job Went to India” and gives a very inspiring speech about how we shall look at our career. He proposes that we look at our career not as engineering or as programming, but rather as business; and that we really should not worry about our jobs going to India because the jobs that can be outsourced are the boring ones anyway. He is like the navigator for anybody who feels lost in his software development career.

    Connie Heitmeyer is the Head of the Software Engineering Section of the Naval Research in the US and is an expert in high assurance software development. Her speech is about how formal methods are used in the development of mission critical software. It is more on the academic side but she really knows what she is talking about.

    Kathy Sierra was the star this evening. She took us on a roller coaster ride about creating passionate users who will stick to your product. She gets her points across really smoothly because she knows how geeks think and how real product end users think. Her presentation was probably PG-13 (which is why it was so good).

    Corporate Presentations

    Chris Laffra from the Rational Performance Engineering Team is really funny. He had two topics: AJAX and Eclipse Performance. His AJAX presentation was somewhat of a last-minute decision because our own Dr. Ahmed Seffah was sick and could not give a presentation. His tutorial on what to do and what not to do with AJAX is a must for all AJAX beginners. The more interesting part, however, was the Eclipse performance presentation, where he explains to us in humour ways about what is going on in Eclipse and Rational Software Architect development and why Eclipse runs so damn slowly at times, and how he thinks the problem should have been tackled.

    These have been the most memorable presentations so far.

    And now, some pictures:

    The Gameloft booth. They were giving out mobile phone games as prizes for the keynote speech raffles and taking CVs.


    The EA (left) and the Microsoft (right) booths. EA gave out several GameCube and XBox 360 games as raffle prizes. Microsoft gave out free copies of OneNote. Both were taking CVs.


    The internet cafe supplied by Apple. I want that Cinema Display…


    Students chilling on the couches during one of the breaks between presentations. Many students had their laptops with them and they were live blogging about CUSEC. The wireless internet access provided by the Hotel Omni apparently costs the organisation 800 CND per day.


    Kathy Sierra concluding her speech with the secret about creating passionate users. Well, not so secret any more.


    Some of the students went to dinner with the organisers and the speakers. We got to the restaurant early and waited about 15 to 30 minutes (I lost track). We all had some small talk and it was fun.

    I will come back with more update in the afternoon (it’s now 1:39 in the morning).

    - SwordAngel

January 10, 2006

  • Mac annoyances

    I finally converted my sister to the dark side: she bought an Apple PowerBook G4. It was a really bad move though. Basically, I fell for the Apple hype and skipped research. I ended up troubleshooting her computer for a few days before it starts working for my sister.

    Here are a few of the annoyances I encountered:

    1. There is no way to change the GUI font sizes unless you download some third-party tools (like TinkerTool), which are, incidentally, rumored to work and not work according various users. Why isn’t this functionality built-in? I wish the people who designed the GUI system have kids with pathological myopia, just so they understand that there are users who are as sharp-eyed as bats. My sister had to set the screen resolution to 1024*768 or even 800*600 (wow, such a good way to waste a 1440*960 LCD monitor).
    2. Why am I forced to have either a private IP address or a public IP address, but not both? The AirPort interface and the PPPoE interface are logically separate, so there is no reason for the AirPort interface to not grab a private address from DHCP even when the computer is connected to the Internet through PPPoE. The network interface management must be designed by some really smart golf clubs (and you know how smart those golf clubs can get). Even Windows does a better job on that. I know this problem can be overcome manually through the use of the ifconfig command, but it’s just such a bad idea to assume that your users know Unix.
    3. Can I have a maximise window button, please? I don’t want an autofit button because the result sucks anyway. It’s like Fido giving me voice activated customer self-service: give me back the good ol’keypress system, you fucktards; I’m spending 3 times as much time to refill my cell phone with airtime because your stupid Andrea robot can’t tell the difference between “voucher” and “credit card”. I digress, but whatever…

    Anyway, think again before you switch from PC to Mac. Mac may be free of the PC annoyances, but it’s got annoyances of its own.

    - SwordAngel

December 25, 2005

  • Exams over… for now

    I had my last exam of the semester on the 21st (database design and implementation). It was ok. I answered 9 out of 10 problems in 2 hours and then spent a whole hour on a trick problem on RAID-6. Anyway, now that it’s over, I’m not even thinking whether I did well or not. I really cannot care less when the teacher outright sucks and more than half the class has no clue what’s going on.

    I spent the past 3 days doing just one thing: leveling up my dark elf. Thanks to the Christmas polymorph event, I was able to make about 1% in 20 minutes at level 48. Even though my dark elf died like 6 or 7 times in 3 days – Dark Elder, Ifrit, fight, disconnection… – I was able to make up for it AND bring my dark elf to level 49. I turned down invitations to 2 LAN parties just for this. I upset a bunch of friends by ditching them, and mom was not happy about me sitting in front of the computer for over 10 hours per day either (hey, it’s not as though I would not be sitting in front of a computer at the LAN parties either). Sorry Danny and Jawaad. I had to stick to my goal of making level 52. Besides, I don’t enjoy LAN parties because I’m really not good sports, if you have not noticed in the 5+ years that you have known me. As for mom, I don’t even bother to explain to her what’s going on. I find it absolutely fine that she doesn’t understand my world; in fact, for privacy reasons, I’d prefer that she does not understand ever.

    - SwordAngel

December 14, 2005

  • Pochacco!

    Some of you know that I adore Pochacco. (Right, Danny?) It’s like a contagious condition in our family that began with my sister. I have been under her heavy influence ever since I was little. My sister likes sheep and Hello Kitty, then she got me to like sheep, then I found out about Pochacco, another cute character by Sanrio.

    My sister got me this “Pochacco head” cushion for birthday last year. You’ve seen this one, Danny.
    DSC01706

    At the end of this summer, she brought me a baby Pochacco from Hong Kong.
    DSC01708

    Even dad joined the madness and brought me another one.
    DSC01707

    Yes, my family is weird. Don’t mind us.

    - SwordAngel

December 13, 2005

  • Update on the C# quirk

    It appears that the official C# specifications allow parameters and class members to take on identical names. Disambiguation is achieved through the use of the “this” reference in the method, as follows:

    class Foo
    {
    private int bar;
    public Foo(int _bar)
    {
    bar = _bar;
    }

    public Print(int bar)
    {
    System.Console.WriteLine("This is the "bar" parameter: " + bar.ToString());
    System.Console.WriteLine("This is the "bar" member: " + this.bar.ToString());
    }
    }

    Regardless, this behaviour is not what I experienced while coding my compiler. Using “bar” without the “this” reference resulted in the member instead of the parameter. Therefore, though it is officially legal for a parameter to take on the same name as a class member, I still recommend not to rely on the ambiguity resolution mechanism in Microsoft’s C# compiler. Instead, try to name your parameters differently. If you must, begin all of your parameter names with an underscore (e.g. “_bar” instead of “bar“).

    - SwordAngel

December 6, 2005

  • C++ .NET, Java, and C#

    I was drooling over the new Visual C# 2005 Express IDE that Microsoft released to the public for free. Apart from the usual goodness (IntelliSense) of its predecessor, Visual Studio .NET 2003, this new IDE also comes with improved refactoring abilities and is much easier on system resource – it does, after all, nothing but C#, as opposed to all the .NET languages that VS.NET2003 did. This is exactly what I want today. I don’t want to hear about C++, or Visual Basic, or J#. I just want a clean, kosher C# development environment. Ever since I have tried to work with managed C++ (i.e. Visual C++ .NET) over a year ago in a team project, I have decided that it’s not worth the effort to continue using C++. C++, since its early days, has been a dirty hack to add some object-oriented programming support to C. As though that was not bad enough, Microsoft made managed C++ even dirtier. For some strange reason that continues to evade me, the engineers at Microsoft decided to implement the .NET framework class library in a completely incoherent way for C++: while some classes are to be declared as objects directly, others are declared as pointers. All good OOP programmer knows that pointers are not welcome in the OOP paradigm because they are too troublesome to manage; beside, what is the point of using pointers when objects can be passed around freely? In the end, my whole team decided that managed C++ is a total disgrace and all of us sweared to not touch it again.

    I never got a chance to like Java because I’ve been working with JSP and servlet technology only. All of my friends agree that the JSP and servlet technology sucks when it comes to configuration and deployment. I often have nightmares about the XML configuration files and the stupid .classpath file. I shiver and get cold sweat from the sheer thought of them. There are also other aspects of Java that I don’t like (the great typesafe enum that was missing until version 1.5, and the double meaning of the “static” keyword).

    Finally, C# caught my attention. I figured that the compiler design course, which is programming-intensive, was a good opportunity to learn a new language. I picked C# because it sounds like a very promising language. Even without the fantastic .NET framework class library, the C# language is so clean syntax- and semantic-wise that it deserves attention in itself. This week, however, I encountered some strange quirk and I hope it’s just a bad implementation of the new C# compiler.

    Somehow, it seems absolutely legal to declare method parameters to have the same name as a class member. The following code snippet illustrates my point…

    public class foo
    {
    public int count;

    /* Constructor(s), more fields, and more methods go here. */

    public void doSomething(int count)
    {
    System.Console.WriteLine(count.ToString());
    // Here, the method uses the "count" field instead of the
    // "count" parameter.
    }
    }

    An application that uses the above class will compile, run, and give you unexpected output. The compiler gives neither error nor warning. I skimmed through the C# specifications and have yet to spot any detail about the resolution of name conflicts between parameters and class members. In any case, I hope that Microsoft intended to regard this kind of name conflict as outright errors, and release a corrected version of the compiler soon.

    - SwordAngel

December 1, 2005

  • A new type of monster?

    Hey, if NC put killer rabbits and killer bees in Lineage, why not add a new type of monster? Killer squirrels! These furry things should spawn in groups and be agressive to pets. These killer squirrels can already be found in real life anyway!

    Setting the humor aside, the situation of the environment is really worrying. Beside the reported lack of pine cones in Lazo, in the Eastern part of Russia, there have also been reports of abnormal fruits in Japan possibly caused by climate change.

    - SwordAngel

  • Ctrl+Alt+Del Animation!

    I’m quite overjoyed to learn that my favourite web comic is going to have an animated feature. Check it out at Ctrl-Alt-Del.

    Not much else is going on lately, besides some really frustrating experience with a course project and then this compiler design assignment which seems to never end. I have decided not to depress my dear readers by telling the whole story.

    My dark elf is gaining experience steadily; it is now level 48 with 23% experience. I’m eagerly looking forward to the end of the semester because this semester was one of the worst I have lived through in my whole school life, with mom being hospitalised twice for a surgery and post-surgery complications, and some unfinished business with two professors and a lab instructor from last year.

    - SwordAngel