Friday, April 30, 2010
Sony Sued Over Pulling PS3 "Other OS"
Ha! Finally somebody's got things right. Anthony Ventura of California has filed a class-action lawsuit against Sony for pulling their "Other OS" feature which allowed users of the original PS3 (the fat one, not the slim one) to install a full Linux OS on their PS3. Users can opt to not install the update, but they lose the right to play on the Sony network, update their games via online features, play new Blu-ray discs, and from what I can tell, potentially lose the ability to play all copyrighted content if the system is somehow flagged and blacklisted for having an old firmware (which, by the way, sounds suspiciously big-brotherish. I'm looking at you, Sony rootkit problems!). Sony claims it's for security reasons, but this comes suspiciously close to the announcement by Geohot that he was able to use Linux running on his PS3 to gain access to other parts of the PS3 that Sony thought were protected. It's nice to see people exercising their rights to do whatever the hell they want with their products and fighting back when the big companies try to take that away from them.
Monday, April 26, 2010
iPhone Cost of Development
When I first heard of the iPhone I thought "Who in their right mind would pay $500 for a toy?" And then I played with one. As soon as I used one for the first time, I knew that the iPhone was going to be my next phone. Aside from having a sleek feel and some neat apps (this was iPhone 2G, before the SDK came out), it had a touch screen and I knew it would be awesome for various chess programs, even though there wasn't an SDK out for it yet.
So I bought one, and played with it, and loved it. Then I jailbroke it, and then I had some fun playing around with Jiggy, which was a Javascript framework for writing simple, interpreted programs for a jailbroken iPhone. Soon after, iPhone OS 2.0 came out, with the promise of an SDK to develop native applications for the phone. I kept waiting and waiting for people to come out with the cool apps I knew would be amazing for the phone, but it never happened. So I started researching how I could make it happen for myself, and this is what I found:
The Apple Developer's License application cost $100, and it was slow processing, and no guarantee you would get one.
The iPhone SDK had to be run on an Intel Mac, which costs at minimum $900 with a student discount.
You have to invest money into books on Objective C and iPhone programming, since it's foreign for most programmers.
The time you invest in writing a program might not even be worth it if Apple rejects your program from the App store.
There was a toolchain for compiling jailbroken apps, but a dependency was broken in 3.0, so it's next to impossible to try the jailbroken route unless you're already an extremely gifted programmer. Hackintosh's sounded appealing, but the bottom line is there's too much hardware support that's missing from a Hackintosh and things just get ugly when Apple issues a new OS upgrade (especially if they change the requirements for the latest version of the SDK). Adobe CS5 sounded like it might have provided a nice alternative to the SDK, but then Apple changed that too.
So comon, Apple - give us a break. The average person can't just drop $1000 on products (plus the cost of the device, if they want to own one) to employ some innovative ideas. Why not allow 3rd parties to write code outside of the SDK? I have so many great ideas, but who knows if I'd ever be able to implement them, not owing to lack of programming experience, but simply because the cost of entry is too great.
So I bought one, and played with it, and loved it. Then I jailbroke it, and then I had some fun playing around with Jiggy, which was a Javascript framework for writing simple, interpreted programs for a jailbroken iPhone. Soon after, iPhone OS 2.0 came out, with the promise of an SDK to develop native applications for the phone. I kept waiting and waiting for people to come out with the cool apps I knew would be amazing for the phone, but it never happened. So I started researching how I could make it happen for myself, and this is what I found:
The Apple Developer's License application cost $100, and it was slow processing, and no guarantee you would get one.
The iPhone SDK had to be run on an Intel Mac, which costs at minimum $900 with a student discount.
You have to invest money into books on Objective C and iPhone programming, since it's foreign for most programmers.
The time you invest in writing a program might not even be worth it if Apple rejects your program from the App store.
There was a toolchain for compiling jailbroken apps, but a dependency was broken in 3.0, so it's next to impossible to try the jailbroken route unless you're already an extremely gifted programmer. Hackintosh's sounded appealing, but the bottom line is there's too much hardware support that's missing from a Hackintosh and things just get ugly when Apple issues a new OS upgrade (especially if they change the requirements for the latest version of the SDK). Adobe CS5 sounded like it might have provided a nice alternative to the SDK, but then Apple changed that too.
So comon, Apple - give us a break. The average person can't just drop $1000 on products (plus the cost of the device, if they want to own one) to employ some innovative ideas. Why not allow 3rd parties to write code outside of the SDK? I have so many great ideas, but who knows if I'd ever be able to implement them, not owing to lack of programming experience, but simply because the cost of entry is too great.
Tuesday, March 30, 2010
Qt is Cute, Among Other Things
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.
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 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.
Tuesday, February 16, 2010
Wolfram|Alpha as a Tool for Mathematics in Education (Part 2)
This is going to be a much shorter post than part 1, but I hope that it provides some interesting links regarding Wolfram|Alpha in the classroom.
Teaching College Math offers an interesting analysis of what W|A has to offer, and how it can affect the classroom. It offers an unique point of view as the author is a math teacher at Muskegon Community College.
Wolfram even had a Homework Day where they offered to help students solve various problems using Wolfram|Alpha.
Laura Ketcham, a 7th grade teacher, has a post on the Wolfram|Alpha blog where she talks about how she incorporated Alpha into her classroom.
Wolfram also posted a blog article and video entitled "Is It Cheating to Use Wolfram|Alpha for Homework?" Conrad Wolfram, Wolfram Research’s Director of Strategic Development, details how there should be a revolution in the way mathematics is taught and should focus on understanding probability and statistics, and using the computer, rather than encouraging hand computations. He demonstrates how Alpha could help ease the transition into this new educational framework:
Hopefully these links will present a small view of how others have viewed Wolfram|Alpha as a potential teaching/learning tool in the classroom, from grade school through college.
Teaching College Math offers an interesting analysis of what W|A has to offer, and how it can affect the classroom. It offers an unique point of view as the author is a math teacher at Muskegon Community College.
Wolfram even had a Homework Day where they offered to help students solve various problems using Wolfram|Alpha.
Laura Ketcham, a 7th grade teacher, has a post on the Wolfram|Alpha blog where she talks about how she incorporated Alpha into her classroom.
Wolfram also posted a blog article and video entitled "Is It Cheating to Use Wolfram|Alpha for Homework?" Conrad Wolfram, Wolfram Research’s Director of Strategic Development, details how there should be a revolution in the way mathematics is taught and should focus on understanding probability and statistics, and using the computer, rather than encouraging hand computations. He demonstrates how Alpha could help ease the transition into this new educational framework:
Hopefully these links will present a small view of how others have viewed Wolfram|Alpha as a potential teaching/learning tool in the classroom, from grade school through college.
Monday, January 25, 2010
Wolfram|Alpha as a Tool for Mathematics in Education (Part 1)
Wolfram|Alpha launched on May 15, 2009 as a new "computational" engine. Rather than presenting direct search results of a query as Google does, it attempts to present data relevant to your query. Need to know the weather in your hometown on the day you were born? Google might give you a list of 20,000 sites where you can find the information, but Wolfram|Alpha can tell you right away, in the interface, no need to follow any additional links! While this is a novel feature, and certainly has far greater implications than just being an amusing trivia machine, Alpha's access to data isn't terribly important for a mathematics major like me.
When it comes to mathematical software, Maple, MATLAB, and Mathematica are the three big names. At SMU we primarily use MATLAB for scientific computing exercises because it is very easy to manipulate matrices, but Wolfram Mathematica is used in the physics department and offers as many, if not more, features than MATLAB.
What makes Alpha so appealing is that it acts as a front-end to a (only slightly watered-down) version of the Mathematica engine. I say slightly watered-down because Wolfram states that you cannot use the full functionality of the Mathematica engine, but it has proved sufficient for all of the computations I have tried performing on it so far, including Calculus, Ordinary and Partial Differential Equations, and Linear Algebra. Perhaps even more importantly than being freely accessible from any machine with a browser (given that Mathematica is generally available on most engineering/mathematics computers on campus), is that Alpha is much less picky about syntax than the full-fledged version of Mathematica. Need to integrate 1/(x^2)? Any of the following inputs works:
The fact that the interface is user-friendly and the syntax is loosely interpreted allowing a variety of users to enter intuitive queries and get the answer they're looking for, in either symbolic or numeric form, makes performing mathematical computations a breeze. Now Alpha is in a position to revolutionize the way students approach math classes. In the past, high school teachers didn't like calculators but they were mostly useless for symbolic computations, and most algebra and nearly all of calculus required a working knowledge of the mathematics behind the process before you could plug into the calculator and get an answer. Upper level mathematics were safe. The TI-89 allowed for symbolic computations of algebra and calculus, but was difficult to use, and differential equations and linear algebra still remained safe. To use software for higher level math required access to a machine with expensive software and a working knowledge of the syntax, and no knowledge of intermediate steps. Alpha changes the game completely: I've input problems from my old Calculus and Differential Equations textbooks into Alpha and it pops out the correct answer just about every time. For most of the calculus problems, it will even show me the steps it took to do the computation.
More on Wolfram|Alpha's potential impacts on high-school/undergraduate college mathematics in the next post.
When it comes to mathematical software, Maple, MATLAB, and Mathematica are the three big names. At SMU we primarily use MATLAB for scientific computing exercises because it is very easy to manipulate matrices, but Wolfram Mathematica is used in the physics department and offers as many, if not more, features than MATLAB.
What makes Alpha so appealing is that it acts as a front-end to a (only slightly watered-down) version of the Mathematica engine. I say slightly watered-down because Wolfram states that you cannot use the full functionality of the Mathematica engine, but it has proved sufficient for all of the computations I have tried performing on it so far, including Calculus, Ordinary and Partial Differential Equations, and Linear Algebra. Perhaps even more importantly than being freely accessible from any machine with a browser (given that Mathematica is generally available on most engineering/mathematics computers on campus), is that Alpha is much less picky about syntax than the full-fledged version of Mathematica. Need to integrate 1/(x^2)? Any of the following inputs works:
- int 1/(x^2)
- integral 1/(x^2) (note that the dx that calculus teachers are so picky about was left off, but Alpha doesn't care)
- int (1/x^2) dx from x = 1 to 2 (does definite integration)
- integral 1/(x^2) {x, 1, 2}
- Integrate[1/(x^2), {x, 1, 2}] (the official Mathematica syntax)
The fact that the interface is user-friendly and the syntax is loosely interpreted allowing a variety of users to enter intuitive queries and get the answer they're looking for, in either symbolic or numeric form, makes performing mathematical computations a breeze. Now Alpha is in a position to revolutionize the way students approach math classes. In the past, high school teachers didn't like calculators but they were mostly useless for symbolic computations, and most algebra and nearly all of calculus required a working knowledge of the mathematics behind the process before you could plug into the calculator and get an answer. Upper level mathematics were safe. The TI-89 allowed for symbolic computations of algebra and calculus, but was difficult to use, and differential equations and linear algebra still remained safe. To use software for higher level math required access to a machine with expensive software and a working knowledge of the syntax, and no knowledge of intermediate steps. Alpha changes the game completely: I've input problems from my old Calculus and Differential Equations textbooks into Alpha and it pops out the correct answer just about every time. For most of the calculus problems, it will even show me the steps it took to do the computation.
More on Wolfram|Alpha's potential impacts on high-school/undergraduate college mathematics in the next post.
Subscribe to:
Comments (Atom)