I'm currently enrolled in CSE 3345, GUI, which apparently is the only GUI development exposure that CSE students get. We've talked about lots of theory, which is fun (and interesting), and lots of design aspects. Our final project is to develop a GUI, but it doesn't require anything close to a fully functional backend. What surprises me is that, given that GUIs are associated with all standard software, why is it that we don't have hardly any education when it comes to the rubber meeting the road: the implementation of a backend with a GUI frontend?
From here I suppose it's a matter of taste as far as what language a GUI should be implemented in. Sure, you can do it in HTML, but that's no good for desktop applications. As far as I know, we get some Java exposure in 1340 (1341?), but then the remaining programming courses are all taught in C++! It seems to me that we should be learning about Qt, a cross-platform development framework widely used for the development of GUI programs. It is currently produced by Nokia's Qt Development Frameworks division, and is free for noncommercial use under GNU LGPL.
Qt is based on signals-slots, where signals are emitted whenever an action takes place in the program, and those signals are sent to slots, which give other objects in the program information about the signal being emitted (and a chance to perform some function, such as updating the UI). This is based on the observer pattern in which an object, called the subject, maintains a list of its dependents, called observers, and notifies them automatically of any state changes, usually by calling one of their methods.
Qt has many advantages over Swing. It's compiled, not interpreted, which means that it's going to run much faster than it's ugly Java counterpart. Like Swing, Qt is cross-platform and can draw GUIs in a variety of styles, including the native OS look for Windows and OS X. Qt also provides a framework for SQL database access, XML parsing, thread management, network support and a unified cross-platform API for file-handling.
Wikipedia links to C++ GUI Programming with Qt 4/first edition, which is an excellent resource for an introduction to Qt. To me it seems like it's much more practical than the small GUI exposure we get via Java, and would be at least worth mentioning in the upper level programming classes at SMU.
Tuesday, March 30, 2010
Tuesday, March 23, 2010
Trying out Linux
One of the different things about being in the CSE program was the heavy reliance on Linux/Unix machines. Prior to this year, I'd never had any exposure to the Linux world - concepts such as root and permissions and the idea that everything can be done from a command line was foreign to a hardened Windows user like me.
Last semester, starting with CSE 2341, all the lab assignments had to be compiled on the department machines, forcing students to become familiar with SSH and command line compiling - no more pretty IDEs. This semester, my math class - Finite Element Analysis - has code written in Fortran 77. It didn't come with any executables, just a directory and a Makefile. We had to learn to tweak the config file and compile and run the entire thing on the math department server, which of course, runs Linux.
I got tired of having to SSH into everything to write/compile small bits of code, and I got tired of trying to use a Windows IDE to set everything up so I could compile on my Windows machine. I tried installing Cygwin, but I found out that it was too difficult to configure with all the dependencies I had to download, so eventually I just gave up and started dual-booting Ubuntu 9.10 on my machine.
Thus far it's been an interesting experience. I like having power to do real computing from the command line. I like that it's easy to open gedit, write a few lines of code, and then compile. It's interesting to see that OpenOffice really can meet most of my everyday needs. Many of the open-source applications I have installed on Windows are easily available on Ubuntu (Firefox, VLC), and other things such as MATLAB have comparable open-source alternatives. What's been most confusing so far are permissions, and trying to configure software that's not in one of the repositories. The case-sensitivity is tough to deal with, coming from a Windows background. I hate that there's no option to "paste as root" in Nautilus - but maybe that'll come in the next version. Wine actually runs the software I use in my business faster than Windows! But on the flip side, it refuses to run my favorite chess software at all.
Overall I truly appreciate the open nature of Linux. Sometimes it seems overwhelming, but it's nice to know that I could customize just about anything I want. I've been gradually using it more and more over the semester to familiarize myself with programming concepts, since it makes things work pretty much out of the box. The only thing that keeps me from using Linux a lot more is that my chess software, which is very important to me, simply can't be run with the current tools.
Last semester, starting with CSE 2341, all the lab assignments had to be compiled on the department machines, forcing students to become familiar with SSH and command line compiling - no more pretty IDEs. This semester, my math class - Finite Element Analysis - has code written in Fortran 77. It didn't come with any executables, just a directory and a Makefile. We had to learn to tweak the config file and compile and run the entire thing on the math department server, which of course, runs Linux.
I got tired of having to SSH into everything to write/compile small bits of code, and I got tired of trying to use a Windows IDE to set everything up so I could compile on my Windows machine. I tried installing Cygwin, but I found out that it was too difficult to configure with all the dependencies I had to download, so eventually I just gave up and started dual-booting Ubuntu 9.10 on my machine.
Thus far it's been an interesting experience. I like having power to do real computing from the command line. I like that it's easy to open gedit, write a few lines of code, and then compile. It's interesting to see that OpenOffice really can meet most of my everyday needs. Many of the open-source applications I have installed on Windows are easily available on Ubuntu (Firefox, VLC), and other things such as MATLAB have comparable open-source alternatives. What's been most confusing so far are permissions, and trying to configure software that's not in one of the repositories. The case-sensitivity is tough to deal with, coming from a Windows background. I hate that there's no option to "paste as root" in Nautilus - but maybe that'll come in the next version. Wine actually runs the software I use in my business faster than Windows! But on the flip side, it refuses to run my favorite chess software at all.
Overall I truly appreciate the open nature of Linux. Sometimes it seems overwhelming, but it's nice to know that I could customize just about anything I want. I've been gradually using it more and more over the semester to familiarize myself with programming concepts, since it makes things work pretty much out of the box. The only thing that keeps me from using Linux a lot more is that my chess software, which is very important to me, simply can't be run with the current tools.
Thursday, March 4, 2010
DMCA Chapter 12
The Digital Millennium Copyright Act (DMCA) was enacted in 1998 as a means of protecting copyrighted works in the flourishing age of digital content. Now it is nothing short of a pure joke, with numerous unintended consequences which lead to bullying of consumers, innovators, and free thinkers by copyright holders (i.e. huge corporations) . The Electronic Frontier Foundation (EFF) has written an article entitled Unintended Consequences: Twelve Years Under the DMCA, which outlines some of the most astonishing abuses of the DMCA which the courts have upheld.
Chapter 12 of the DMCA states that "no person shall circumvent a technological measure that effectively controls access to a work protected under this title." While originally meant to restrict the ability of a user to copy and distributed protected works, this clause has had far reaching consequences which ranges from trampling on the fair use doctrine to being interpreted as including works that were clearly not meant to be covered.
For example, under the DMCA, purchasing music (or licensing it... which will probably be the subject of a later post) wrapped in DRM (Digital Rights Management) means that you are not allowed to try to circumvent the DRM. While we all realize that there should be some way of preventing a purchaser of a music file from distributing it across the internet for free, it goes against intuition (and fair use rights!) that the music I purchase can only be played on my computer and not a portable media player, or worse, that I'm unable to play it on both my iPod and my Zune, depending on if it's wrapped in Apple's FairPlay DRM or Microsoft's PlayForSure DRM. However, the DMCA makes it illegal for me to circumvent the DRM technology to make it interoperable with all of my devices... hmmm, where's the sense in that? Fortunately we've pretty much made the transition away from DRM on music files, but we still have this problem with our video files.

Hollywood has used the CSS (Content Scrambling System) in order to protect DVDs from being copied. While free programs exist which allow users to circumvent the CSS in order to make the content of the DVD interoperable with other media players, it is illegal under the DMCA to even own such software, much less use it.
Many big companies claim that any reverse engineering of their software is a violation of the DMCA. Apple claims that it is a violation to jailbreak an iPhone because the firmware is copyrighted. Companies are now claiming that authentication routines fall under the DMCA restriction for circumvention. Lexmark uses authentication routines to hinder aftermarket vendors from selling their own, cheaper, toner cartridges. Even garage door makers have filed suits against each other claiming that it is a DMCA violation to bypass the authentication protocol. These claims are absolutely absurd and are nothing more than an abuse of a law which was originally meant to protect copyrighted works, which now serves to foster monopolies and anti-competitive business business practices.
This is just a small bit of my opinion regarding the DMCA. Bottom line - courts keep upholding ridiculous DMCA claims which infringe on fair use rights and competition - it's a slippery slope until we're locked into mini-monopolies, with any company we try to purchase things from claiming that, due to the DMCA circumvention clause, they are the only ones who can manufacture products which work with their own products. Imagine a world where big oil can purchase car manufacturers - if Shell purchased Honda, and added some technology to the car and a little bit of spice to the fuel, so that Hondas could only run on Shell gasoline, and it would be illegal to try to circumvent the technology to make your car compatible with Exxon gas. Unfortunately, given the courts rulings so far, it's could very easily happen.
Chapter 12 of the DMCA states that "no person shall circumvent a technological measure that effectively controls access to a work protected under this title." While originally meant to restrict the ability of a user to copy and distributed protected works, this clause has had far reaching consequences which ranges from trampling on the fair use doctrine to being interpreted as including works that were clearly not meant to be covered.
For example, under the DMCA, purchasing music (or licensing it... which will probably be the subject of a later post) wrapped in DRM (Digital Rights Management) means that you are not allowed to try to circumvent the DRM. While we all realize that there should be some way of preventing a purchaser of a music file from distributing it across the internet for free, it goes against intuition (and fair use rights!) that the music I purchase can only be played on my computer and not a portable media player, or worse, that I'm unable to play it on both my iPod and my Zune, depending on if it's wrapped in Apple's FairPlay DRM or Microsoft's PlayForSure DRM. However, the DMCA makes it illegal for me to circumvent the DRM technology to make it interoperable with all of my devices... hmmm, where's the sense in that? Fortunately we've pretty much made the transition away from DRM on music files, but we still have this problem with our video files.

Hollywood has used the CSS (Content Scrambling System) in order to protect DVDs from being copied. While free programs exist which allow users to circumvent the CSS in order to make the content of the DVD interoperable with other media players, it is illegal under the DMCA to even own such software, much less use it.
Many big companies claim that any reverse engineering of their software is a violation of the DMCA. Apple claims that it is a violation to jailbreak an iPhone because the firmware is copyrighted. Companies are now claiming that authentication routines fall under the DMCA restriction for circumvention. Lexmark uses authentication routines to hinder aftermarket vendors from selling their own, cheaper, toner cartridges. Even garage door makers have filed suits against each other claiming that it is a DMCA violation to bypass the authentication protocol. These claims are absolutely absurd and are nothing more than an abuse of a law which was originally meant to protect copyrighted works, which now serves to foster monopolies and anti-competitive business business practices.
This is just a small bit of my opinion regarding the DMCA. Bottom line - courts keep upholding ridiculous DMCA claims which infringe on fair use rights and competition - it's a slippery slope until we're locked into mini-monopolies, with any company we try to purchase things from claiming that, due to the DMCA circumvention clause, they are the only ones who can manufacture products which work with their own products. Imagine a world where big oil can purchase car manufacturers - if Shell purchased Honda, and added some technology to the car and a little bit of spice to the fuel, so that Hondas could only run on Shell gasoline, and it would be illegal to try to circumvent the technology to make your car compatible with Exxon gas. Unfortunately, given the courts rulings so far, it's could very easily happen.
Subscribe to:
Comments (Atom)