Archive for July, 2005

Jul 31 2005

iTunes Music Store is Evil

Published by matt under Uncategorized

I’ve read these things before, but it wasn’t until I bought a CD from the iTunes Music Store, and encountered it’s ugliness first-hand that I can begin to appreciate just how awful it really is.

I bought “Totally Whipped” by the Blenders. Finding a cappella discs from thirteen years ago isn’t so easy; I only ever owned a bad tape dubbed from a bad tape of this music, and couldn’t find it when I was looking for it in high school. When I found the disc on the iTunes Music Store, I was ecstatic.

Of course, each track has a burst of static at the end of it. The product is flawed. I have not been able to get through to any kind of support at Apple for this. I paid $10 for a CD that has a burst of static at the end of every track. This is bull*hit.

Of course, I can’t edit those tracks. Why? They’re protected by the FairPlay DRM scheme—Digital Rights Management. Whose rights, though, is this meant to protect? You see, it renders the song unplayable on anything except 1) my Powerbook, 2) an iPod owned by me, or 3) up to 4 other computers I choose to “Authorize.”

Of course, after upgrading to OS X 10.4, my Powerbook became another computer. So, I’ve now authorized two computers to play this music, even though they are both the same computer.

Complete and total bull*hit.

I’m not purchasing anything else through the iTunes Music Store. I want my $10 back for the tracks that are faulty (or new tracks that aren’t), and I can’t stand the fact that the system can’t tell the difference between my Powerbook running 10.3, and my Powerbook running 10.4. Hell, it isn’t like the MAC address of the ethernet card changed.

Digital Rights Management is simply a way for Big Music to control how we listen to music which we, as consumers, have otherwise paid for the right to listen to how, where, and when we want to. There is no other way to say it. And, because they give Senators more money than you and I, the votes of Big Music count for more than your vote at the ballot box.

Comments Off

Jul 27 2005

It is worse to copy a movie than shoot someone dead

Published by matt under Uncategorized

Today’s post is brought to you by the Creative Commons and BoingBoing.net:


Tuesday, July 26, 2005

Shoot someone? Not Smith & Wesson’s fault.
Copy a movie? Grokster’s fault


 
Good stuff from Daily Koz.

Regarding Grokster:

We hold that one who distributes a device with the object of promoting its use to infringe copyright, as shown by clear expression or other affirmative steps taken to foster infringement, is liable for the resulting acts of infringement by third parties,”

Justice Souter wrote.

Regarding guns:

Senate Republicans on Tuesday moved the National Rifle Association’s top priority ahead of a $491 billion defense bill, setting up a vote on legislation to shield firearms manufacturers and dealers from lawsuits over gun crimes.

The president believes that the manufacturer of a legal product should not be held liable for the criminal misuse of that product by others,” said White House spokesman Scott McClellan.

[Senator Larry] Craig said such lawsuits are “predatory and aimed at bankrupting the firearms industry,” unfairly blaming dealers and manufacturers for the crimes of gun users.

Link (thanks, Earl!)

posted by Mark Frauenfelder at 07:36:01 PM

Creative Commons License
This work is licensed under a Creative Commons License.


Comments Off

Jul 25 2005

Swearing in source

Published by matt under Uncategorized

It never occurred to me (until this evening) that there might be foul language in the source code I’ve been studying.

Keep an eye on this space for some numbers regarding the use of foul language in source code by the students I’ve been studying for the last two years… :)

Comments Off

Jul 21 2005

Classrooms are conversations.

Published by matt under Uncategorized

Let’s get cranky, shall we?

I’m going to make strong statements, and see if there’s pushback. And, this weekend, I’ll try and turn comments back on. In the meantime, use the gmail address, and I’ll add your comments as they come in.

From Worker Bee, we see this post:

Today I taught my last class of the quarter (Friday is the final), in which I gave a lecture introducing computer science, the whole discipline, starting with NAND gates and how you’d coax electricity to behave like boolean logic, and ending up with the P=NP question and the halting problem. I don’t know whether my students cared about it, but for me it was great fun.

What if the entire lecture had been questions? “What is computer science?” Wait for a minute. Two. Wait until someone says something. Anything. Challenge it. Explore it. Ask other students in the classroom whether they agree or disagree. If they disagree, why? If they don’t, why? See what they know. See what they think. See if they know what they do not know.

In the end, who gives a shit about what another CS grad student thinks computer science is? Grad students in CS are a dime-a-dozen, and every one of us has our own slant, our own view, our own opinion on what computing is or is not. I personally think computing is about the creative process, but I doubt many people care about that. A bunch of first years certainly don’t give a flying duck about NAND gates, and they never will. (I take that back; some of them do. And those students probably didn’t need your lecture in the first place.) Who cares if they have that fragile knowledge about the computational tower—I want them to think!

I’m glad the lecturer’s imagination was captured by their own egotistical rambling, but I’m sure mine wouldn’t have been. Mercy. When will people start asking their students questions, challenging them to wake up, instead of selling them a crapload of bullshit facts?

For the record: Yes, I know I wasn’t there. Yes, I know I’m extrapolating from nothing. Consider Worker Bee’s blog post nothing more than a springboard for me to rant; I certainly don’t actually have any malice or ill-will towards Jacob. The post was nothing more than a foil. But still, why wasn’t the post about the great discussion they had in that classroom, instead of a lecture that the students may or may not have cared about? How much longer until our classrooms become conversations, not pulpits?

Comments Off

Jul 16 2005

Automator : End-user programming

Published by matt under Uncategorized

Automator, a new application in OS X, provides an interesting framework for “end-user programming”.

The application allows the user to drag-and-drop actions, which tie together in a pipeline; there are no conditionals, but you can filter the output of one action before feeding it to another. I’m amazed by its power because of something I wanted to do in my research, but didn’t know how to do it easily.

I have generated webpages from my database, so I can easily browse through sequences of errors made by students. I also have index pages that provide an overview of all of a student’s sessions. What I wanted was PDFs of those index pages, so I could create hard-copy and work with them off-line. Saving 200 web pages to PDF did not sound like a fun job.

Enter Automator.

Automatorscreensnapz001

I went to the top-level page in Safari, and from there, ran the above Automator workflow. It takes the current page out of Safari (the top box), finds all the URLs (the second box), and then saves each of those URLs as a PDF in a directory of my choosing (third box). This took almost no time to string together, and only a few minutes to run (depending on network connection speed, of course).

The result? I have 200+ PDFs of web pages that I didn’t have ten minutes ago. Total effort? Almost zero.

To contrast, I have no idea how I would have scripted this from the command line. Rendering HTML documents to PDF would have involved a UNIX tool that may or may not exist; certainly, I would not have been able to do this in any reasonable amount of time myself.

So, AppleScript and it’s new wrapper/big brother Automator come to the rescue, and I’m well impressed. No doubt I’ll have more to say about Automator at a later point in time; given that you can write actions in Perl, Python, AppleScript, and Objective-C, it’s a programming environment with a great deal of potential.

Comments Off

Jul 12 2005

There are other languages, you know.

Published by matt under Uncategorized

SENIOR SOFTWARE ENGINEER, BLOGLINES

Ask Jeeves, Inc. is seeking qualified candidates for the position of Sr. Software Engineer to work at our Los Gatos location. The Software Engineer will develop and implement a large scale data processing system in a distributed environment, in C++. The development tasks involve all aspects of scaling and improving a high-volume end-user focused web service.

What’s wrong with this job advert? Let’s pick it apart:

  • Senior, but dictated to. They want to hire in expertise, but they’re not willing to hire in expertise (as we will see).
  • Premature choice of technology. We know the task (a large scale data processing system in a distributed environment), and unfortunately the technology is already chosen (C++).
  • Conflation of concerns. “The development tasks involve all aspects of scaling and improving a high-volume, end-user focused web service.” This is a singularly massive undertaking. The implication is they want not just a good developer, but someone who can also build the systems that will run the code as well. Perhaps I’m reading into this point too deeply.

The choice of C++ up front is, I assume, because they already have a(n inadequate) solution in place, written in C++. Or, perhaps, because they think that by writing it in C++, it will be easier for them to hire in someone to help extend the system, or to replace the senior engineer later with someone less expensive when the development work is done.

Either way, they’re confused. The problem here isn’t one of language, but one of paradigm. Developing in a distributed paradigm where you have both performance (must be responsive) and reliability (must not go down) demands is challenging, to say the least. Then, requiring a tool as poor as C++ to do the job, you might as well set the project up for failure.

Granted, someone very talented can work with even the most inadequate of tools and do an amazing job. But I can’t help but wonder: wouldn’t the developer produce safer code, faster, in any of a half-dozen other languages? First and foremost, Erlang comes to mind. Then, perhaps Concurrent ML or a Lisp of some variety. In any of these three cases, you get much cleaner semantics and good performance. In the case of Erlang, I think I should just quote from their FAQ:

  • Telecommunication systems, e.g. controlling a switch
    or converting protocols.

  • Servers for Internet applications, e.g. a
    mail transfer agent, an IMAP-4 server, an HTTP server or a
    WAP Stack.

  • Telecommunication applications, e.g. handling
    mobility in a mobile network or providing unified messaging.

  • Database applications which require soft realtime
    behaviour.

Erlang is good at solving these sorts of problems because
this is the problem domain it was originally designed for.
Stating the above in terms of features:

  • Erlang provides a simple and powerful model
    for error containment and fault tolerance
    (supervised processes).

  • Concurrency and message passing are a fundamental
    to the language. Applications written in Erlang
    are often composed of hundreds or thousands of
    lightweight processes.Context switching between
    Erlang processes is typically one or two orders
    of magnitude cheaper than switching between
    threads in a C program.

  • Writing applications which are made of parts which
    execute on different machines (i.e. distributed
    applications) is easy. Erlang’s distribution
    mechanisms are transparent: programs need not be
    aware that they are distributed.

  • The OTP libraries provide support for many common
    problems in networking and telecommunications systems.

  • The Erlang runtime environment (a virtual machine,
    much like the Java virtual machine) means code compiled on
    one architecture runs anywhere. The runtime system
    also allows code in a running system to be updated
    without interrupting the program.

Comments Off

Jul 09 2005

Hacking Dashboard widgets

Published by matt under Uncategorized

Delwdgt

Say you have a widget, but it doesn’t do what you want. The great thing is, they’re only HTML and Javascript.

Take, for example, the widget at right. This is dashLicious, a great widget from protagonist.co.uk. Now, I don’t know if I’ve violated a license anywhere, but I modded my my widget because I wanted to have it persistent—always on my desktop—like an application. This means that the widget no longer knew when to grab information from Safari for posting to my del.icio.us bookmark feed. It needed a “refresh” button.

So, I added one. I made a change to the CSS, a change to the HTML, and I added three lines of Javascript. That was it. Among other things, this means that the code for dashLicious (in all three cases) was very clear and well written. Second, it means that I can now use their widget as a full time app, and replace Cocoalicious as my bookmark posting tool, as it was crashing on me something fierce.

I’m impressed. Dashboard widgets will likely be a very useful thing before all is said and done. I’m pleased.

Comments Off

Jul 08 2005

Oops!

Published by matt under Uncategorized

Sometimes we do things because we are dumb.

Lyra:/usr/local/lib mcj4$ ls -al libusb*
-rwxr-xr-x  1 root mcj4  37324 Jul  8 18:27 libusb-0.1.4.3.0.dylib
-rwxr-xr-x  1 root mcj4  78388 Jul  8 17:29 libusb-0.1.4.4.2.dylib
lrwxr-xr-x  1 mcj4 mcj4     22 Jul  8 18:27 libusb-0.1.4.dylib -> libusb-0.1.4.3.0.dylib
-rw-r--r--  1 root mcj4  48708 Jul  8 18:27 libusb.a
lrwxr-xr-x  1 mcj4 mcj4     22 Jul  8 18:27 libusb.dylib -> libusb-0.1.4.3.0.dylib
-rwxr-xr-x  1 root mcj4    730 Jul  8 18:27 libusb.la
-rwxr-xr-x  1 root mcj4 836408 Jul  8 17:29 libusbpp-0.1.4.4.2.dylib
lrwxr-xr-x  1 mcj4 mcj4     24 Jul  8 17:29 libusbpp-0.1.4.dylib -> libusbpp-0.1.4.4.2.dylib
-rw-r--r--  1 root mcj4 176660 Jul  8 17:29 libusbpp.a
lrwxr-xr-x  1 mcj4 mcj4     24 Jul  8 17:29 libusbpp.dylib -> libusbpp-0.1.4.4.2.dylib
-rwxr-xr-x  1 root mcj4    846 Jul  8 17:29 libusbpp.la
Lyra:/usr/local/lib mcj4$ mkdir old
Lyra:/usr/local/lib mcj4$ mv * old
mv: cannot move `old' to a subdirectory of itself, `old/old'
Lyra:/usr/local/lib mcj4$ lls
-bash: lls: command not found
Lyra:/usr/local/lib mcj4$ ls
dyld: ls can't open library: /usr/local/lib/libintl.3.dylib  (No such file or directory, errno = 2)
Trace/BPT trap
Lyra:/usr/local/lib mcj4$ ls
dyld: ls can't open library: /usr/local/lib/libintl.3.dylib  (No such file or directory, errno = 2)
Trace/BPT trap
Lyra:/usr/local/lib mcj4$ mv /usr/local/lib/libintl.3.dylib .
dyld: mv can't open library: /usr/local/lib/libintl.3.dylib  (No such file or directory, errno = 2)
Trace/BPT trap

If you don’t know what this means, I’ll tell you: it means I’ll be backing some things up and installing OS X 10.4 this evening; I’ll just take this as a sign.

I wonder why everything in /usr was owned by group ‘mcj4′. There’s no knowing at this point, and the side effect is that I was able to nuke my Mac.

Yep, yep. Stupids R us. It must be one of those days…

Comments Off

Jul 07 2005

End of the SPAM!

Published by matt under Uncategorized

I wanted to generate a quickly searchable database of snippets of text regarding technology surrounding editors, environments, and languages used for teaching CS over the last 50 years. It isn’t complete or comprehensive, but I’ve refreshed myself on key points from a large number of papers in my bibliography, which was the desired outcome.

In the next day or two, I’ll put together a summary post that links to all of these for quick-and-easy navigation. Also, I have a number of things that are conspicuously (and knowingly) missing at the moment:

  • Papers on BlueJ and DrScheme
  • Papers on LOGO and microworlds (eg. StarLogo).

I’ll end up handling these separately; it’s too bad they’re not in the list (for completeness), but for the sake of time, I’ve omitted this literature, as I’m more familiar with it anyway.

Comments Off

Jul 07 2005

2005: Myers and Ko

Published by matt under Uncategorized

Different methods, potentially we may have different ways of coming to similar conclusions? Interesting.

Eliciting design requirements for maintenance-oriented IDEs: a detailed study of corrective and perfective maintenance tasks

Design requirements for more flexible structured editors from a study of programmers’ text editing

Yep. Highly relevant.

Comments Off

Next »