March 07, 2008
Of Interest 07/03/2008
- TRIZ is a methodology for creativity. Worth looking at.
- The iPhone SDK has got every geek drooling over his keyboard, and for good reason. I think this model will work.
- Is 1000 True Fans the path to happiness? The argument goes that 1000 true fans will provide sufficient income for an artist, and that isn't that many people. Assuming your work requires only you to produce it this seems a plausible number, but I think the scarcity of true fans is a big roadblock. You might need 100,000 fans before you get 1000 who are really into what you do.
- Looking at what you can do with rather more than 1000 true fans, interesting workplace experiments from 37Signals. I like the four-day week; funding passions is too normative; the release of the iPhone SDK means discretionary spending accounts gets the thumbs up from Dave.
Posted by Noel at 04:02 PM | Comments (0) | TrackBack
October 19, 2007
Attack of the Spam Bots
Over the last weekend, and sporadically this week, the computer that hosts untyped.com and Untyped's email server has been under attack from a network of spam bots. It doesn't appear that we've been targeted specifically. Rather, it seems that the bots are scanning for email addresses to spam, presumably to propagate the bots. It took down our email server over the weekend, but we've since taken steps to combat the flood of traffic. However, if you sent us an email and are waiting for a response, you might want to send it again.
We'd don't know what bot is attacking us, but there is a good chance it is the “Storm Worm”. I didn't know of the Storm Worm before we were attacked; my reading since then indicates it is a truly massive network, with the potential to cause a lot of trouble. This Wired piece discusses how Estonia was taken off the Internet by a massive bot net attack.
Posted by Noel at 02:46 PM | Comments (0) | TrackBack
August 21, 2007
S3 Doesn't Count the Pennies (Yet)
This is post is from Dave, though it is posted under my name -- Noel
I use Amazon S3 as an off-site backup for data on my desktop computer. S3 has two principle advantages: there's no upper limit on the amount of data you can transmit or store, and it's very cheap... sometimes a little too cheap.
Two days ago I received an auto-generated warning from S3 about my account status:
Greetings from Amazon Web Services,
AWS was unable to charge your account based on the payment information you provided. Please update your payment method information using the Your Web Services Account section of the AWS web site.
Sincerely,
Amazon Web Services
There were a few extra details in there that convinced me that this wasn't spam, but that was the gist of it. I logged on to my account to find that my balance was a whopping $0.01. A single cent!
I checked my credit card details and they seemed to be okay. I re-entered them to be on the safe side, and then emailed AWS asking them to re-try the payment and let me know if it failed again. I received this response:
Thank you for contacting AWS regarding the payment issue related to your August 1st bill. We have found that some credit card issuers decline charges of $0.01 (USD), especially when the amount is converted to another currency. AWS is working on a solution for this issue. In the meantime, please contact AWS directly at webservices@amazon.com if this issue should occur again.
The $0.01 (USD) charge on your August 1st bill has been forgiven, and your account is in good standing.
A month's backups, totally free of charge - that's value for money. I shall be recommending S3 to all my friends.
Posted by Noel at 12:05 PM | Comments (4) | TrackBack
July 05, 2007
Of Interest 05/07/2007
There's been a bit of a backlog building up for Untyping while I work hard on other stuff. Here's so the of the stuff that has recently caught my eye:
- “Show, don't tell” is an old mantra in creative writing. Announcing the Business of Software Wiki is a great example of this principle in action. Note how Joel doesn't tell you what a wiki is, which would be boring, but shows you with a brief demonstration. In addition to making more engaging prose showing conveys information on how to use the wiki, which helps bootstrap new users. Neat.
- Facebook opened up an API recently. While Facebook could make an engaging platform for many things Jason Kottke gives a well-reasoned argument on why it probably isn't a big deal
- Watching without being. Just read this. Its only a short blog post but there's too much in it to summarise here.
Posted by Noel at 11:53 AM | Comments (0)
April 19, 2007
Of Interest 19/04/2007
This is what's caught my eye today:
- Slideaware discuss their shift from Python to Ruby on Rails to Erlang. Tune in next time when they tell us if Erlang delived the goods.
- I think everyone should know about Dirichlet processes. This should be a blog post of it's own. I actually had a dream about such a post, so I guess it is destined to happen.
- Publications from the Software Technology group at Radboud University Nijmegen are currently the only place I know where you'll find ideas on how to capture web-based workflows in a high level manner. The basic observation is simple: given a data definition you should be able to generate most of a web site that allows you to interact with that data. The trick is making it general enough to be useful. Rails has scaffolding but it is quite limited in what it can do, so it tends to be used only for prototyping. We want to use it for production code. This area involves lots of PLT goodness: FRP, bidirectional programming, and metaprogramming all look like they'll play a part.
Posted by Noel at 03:37 PM | Comments (0)
April 17, 2007
Of Interest 17/04/2007
- AThe curious rotational memory of the Electron is sure fascinating, and makes me wish I had paid more attention in Physics 110. Read through the archives and impress your friends with the amazing Feynman plate trick!
- If you read the archives like I suggested you are undoubtedly all excited about monads of probability, so go here and download some more reading goodness. My goodness!
- Dave G today: “Snooze is a pro-testing library!”. Damn straight! Software has the right to testing, and that's a right I'll fight for. (Music, apparently, has the right to children. The implications of this are uncertain.)
- Leo “Flapjax” Meyerovich drops by the comments to let us know he's going to do the world's funnest PhD (at Berkeley, no less). Maybe he can employ Ezra as a RA? This is actually worth a post on it's own, but time is short. I'll just say two things: servers and mixed synchronous/asynchronous signals. Might not mean much to you, dear reader, should be enough for me to remember what I want to talk about.
These quick posts are fun to write. This could be the start of something.
Posted by Noel at 04:19 PM | Comments (0)
April 16, 2007
Interesting Stuff 16/04/2007
- A fascinating study of the surprisingly humane system of privateering. Read it and reflect on current attitudes towards ransom in places like Iraq.
- I got emailed a survey today. As an incentive to complete it, the company offered to either put me into a competition to win an iPod, or to buy 75 kilos of CO2 from European industries. How could I go for an iPod when offered this? Clever.
- This discussion of useful features that didn't end up being necessary is very familiar. We've spent many a day implementing some nice abstraction that we don't end up using.
Posted by Noel at 05:16 PM | Comments (0)
April 05, 2007
Bleep! iTunes
I've just received an iPod, and so the acquisition of digital music is suddenly much more interesting to me. I have the following requirements:
- I want music
- I want it cheap
- I want it to work with my iPod
- I preferrably want it without DRM
So I surely must prostrate myself before iTunes? They're getting a lot of press following the announcement by EMI that they're selling their entire digital catalog without DRM, and at a higher quality than was previously available. Actually, a bit of searching shows that there is some respectable competition out there:
- 7digital offers EMI's catalog as 320kbps MP3s (probably better than iTunes 256kbps AAC), and are cheaper than iTunes.
- eMusic offers DRM-free 192kbps VBR MP3s on a subscription based plan that works out much less than iTunes' per track cost. Now their selection is limited, but if you like good music (i.e. the music I like) you'll be well covered. Catalog search and FAQ here
- Bleep sells DRM-free 192kbps VBR MP3s. Like eMusic their selection is limited to “good music”. Individual tracks cost more than iTunes, but albums are less.
None of the above options offer the range of iTunes, but all are certainly worth considering before hitting iTunes. My main problem with eMusic is the subscription model; while 40 tracks a month is great, my monthly music budget is a less, on average, than their subscription fee. 7digital's site is just a mess, which makes it distinctly less appealing. So it looks like Bleep is going to be my first port of call for digital music, followed by 7digital or iTunes.
Posted by Noel at 01:00 PM | Comments (2)
March 14, 2007
Four Dudes Take on the World
Inspired by a LtU post I downloaded Vendetta and, poof!, two hours disappeared as I blasted an assortment of evil bots into space dust. Vendetta looked even more impressive when I learned that the guys who develop it number precisely four. Very inspirational!
Posted by Noel at 01:34 PM | Comments (0)
December 13, 2006
S3, SSL, and s3sync
S3 is Amazon's rather awesome data storage service. I'll just note that it makes a great way of backing up your data; if you want to know more read Matt's excellent overview.
We ran into problems setting up s3sync on a client's system. Specifically SSL didn't work, with the handy error message SSL Error:. That's right, we were told there was an error put s3sync wouldn't tell us what the error was. We tried using wget which was nice enough to tell us we had a certificate problem. An hour of Googling later and the solution was this:
- Grab the CA Cert file (
cacert.pem) from any one of the bazillion places on the Internet that mirror it. - Copy it to
/usr/lib/ssl/certs/cert.pem - Set
SSL_CERT_DIRandSSL_CERT_FILEto/usr/lib/ssl/certs/and/usr/lib/ssl/certs/cert.pemrespectively. - Nothing more to do!
I found the Lynx documentation the most useful. The OpenSSL documentation was much less helpful.
Posted by Noel at 02:25 PM | Comments (0)
November 15, 2006
Fix your Mac
If there is one downside to owning Apple hardware it's the cost of repairs. I've just come across iFixit, which has excellent do-it-yourself guides to replacing all the major components in your Mac. Yay!
Posted by Noel at 09:00 AM | Comments (1)
November 06, 2006
A Farewell to Alms
Tyler Cowen writes
The book is not yet out, but it is the best of its kind since Guns, Germs, and Steel.
The book in question is A Farewell to Alms, and 4 pages into the draft I'm hooked.
cp>Till a few days ago a full PDF draft was available online. This has been replaced with a few PDFs of individual chapters. The author tells me this was done at the request of the publisher, and he intends to put the first eight chapters online.Posted by Noel at 05:56 PM | Comments (0)
Voting Systems: Theory Meets Practice
Suresh posts on tamper-proof voting systems. Why do you care? Apart from the application to democratic government, it's a problem that all Internet companies that aggregate user behaviour (for example, social networking sites) face. Be sure to read the comments.
I love applying theory to real-world problems, if only because it justifies my over-education :)
Posted by Noel at 10:12 AM | Comments (0)
Does engineering/math/science education in suck?
Kathy Sierra asks why does engineering/math/science education in the US suck? Nice of her to limit that to the US. I guess we're ok here in the UK. “Education sucks” is a meme that has a lot of mileage. We've posted along these lines before. I'm willing to accept that the average educational experience is only average, but so is the average student. I think the passionate will always be disappointed with those who don't share their passion. I know I have been in my time at University, but on the flip side I've been a pretty poor student in some classes that I found boring. However, as an engineering/science graduate I must ask “where's the evidence” in response to this claim. There is definitely something to be said about the issues of teaching and teaching standards, but I find this post too simplistic.
Posted by Noel at 08:03 AM | Comments (0)
November 05, 2006
Firefox 2.0 Find Again
Incremental search is one great feature in the Firefox 1.x series. Press /, or simply start typing, and Firefox searches as you type. Firefox 2.0 has the same feature, except it is missing the “Find Next” and “Find Previous” buttons. Here are three ways you can get this functionality back:
- Press F3 to find next, and Shift-F3 to find previous
- Start your search by pressing Control-F (Command-F on OS X).
- Muck around with your Firefox configuration to turn on the buttons
Mozilla call this feature Find As You Type. Follow that link and you'll find a few more usage tips.
Posted by Noel at 05:31 PM | Comments (0)
July 27, 2006
Getting Things Done (GTD)
I'm not a full-on GTD nut; in fact, I've had a love-hate relationship with years with to-do lists, organizers, PDAs, and the like. I love the organization they bring to my life; I hate the fact that I can see I'm so busy.
If that makes sense to you, read on.
These past few months, I've had quite a bit on my mind: finishing and defending a doctoral thesis, transitioning to a postdoctoral post (little devices, languages, and operating systems related), and all the while generally jetting around the world (Houston (USA), Denmark, Scotland, Los Angeles (USA), Cleveland (USA), and Portugal). Really, when I signed up, they didn't tell me about the travel. Honest.
So what do I do? I'm not such a fan of calendars; they're heavyweight. As a Mac user, and fan of outliners, I like Kinkless GTD + OmniOutliner Pro. However, at some level, this is heavy. Nice, but heavy; it requires several applications (OmniOutliner, iCal) plus some big Applescripts.
Recently, I found ToDo.txt. This looks promising for the old-school GTD nut in you. It's a couple of shell scripts that maintain a text file, using things like sed, awk, and grep to update and present your GTD lists. Now, this looks promising, but I'm torn in two directions. In one, it's simplicity itself. In the other, I abhor shell scripts; they're the ugliest sin ever inflicted on programmers after C, and plain text is about as far from a robust back-end as you can get. (Accessible via vi? Yes. Any consistency guarantees? No.)
As you can see, tools are toys---they are what we look at when we don't really want to Get Things Done. At the same time, I've found that using Kinkless + OOP has been very useful. It just... isn't quite what I want yet. It seems like a GTD system should be very easy to use (quick), omnipresent, and portable---I should never have to be without my to-do list.
Part of me thinks that I just need to use an old-fashioned Hipster PDA, and be done with it. Another part of me says that my soon-to-arrive Irex Iliad may become a useful tool for carrying around plain-text GTD lists---it is, after all, should be a very portable, low-power eInk device well suited to this kind of thing. Something that combines the ease-of-use of ToDo.txt with the ability to render and synchronize those lists to my Iliad... it's possible, anyway.
If I stumble onto something amazing, I'll let you know.
Posted by jadudm at 09:11 PM | Comments (1)
June 06, 2006
OO is convenient
One of the recurring themes of the Dagstuhl workshop was “convenience matters”. This is clearly true. All Turing complete programming languages have equivalent power yet we prefer some over others. It's about what they make easy.
This point came to mind when looking at the various abstraction mechanisms in PLT Scheme. The designers of PLT Scheme have analysed the types of abstractions people often use, carefully separated them into different classes, and provided separate mechanisms for each class. If you want to create a unit of functionality you can use the module system. If you want to parameterise code you can use the unit system. If you want to dispatch on type you can use the OO system. This is in contrast to Java, where you get one main abstraction mechanism, the class, which is a module system, a way of parameterising code, and a dispatch mechanism all mashed up into one. This is considered undesireable as you are forced to consider interactions with other mechanisms when you only want to use one. However it has one big advantage: convenience. I don't often use PLT Scheme's unit system, so when I do I have to look up the documentation. Same with PLT's OO system. This tends to make me avoid using them, as I don't like to spend time reading the docs or figuring out the system. However with Java you're always writing classes, so it's familiar and the barrier to use is lower. Convenience matters.
Posted by Noel at 04:27 PM | Comments (0)
May 24, 2006
Of Interest 24/05/2006
If you're a web developer then you pretty much have to read Brendan Eich's slides on JavaScript 2 / ECMAScript Edition 4. The quick summary: it looks like Scheme with an optional type system, which is a way of saying it looks damn good. All Hail Professor Bloggy McHerman!
Gilad Bracha's rant against continuations and the subsequent followups are interesting and infuriating in equal parts. Once again Prof B comes to the rescue. His pedantic aside is particularly important. I'll also add my own brief rejoinder: I'm not an idiot. Give me all the tools in the toolbox, and I'll make the decision when to use them. In some situations it is appropriate to use cookies (e.g. login), for others encoding continuations in URLs is the right solution (e.g. persistent URLs), and for others server-side continuations are right (e.g. temporary pages such as form validation)
Seems like no-one really knows how much sleep you should get, but a drug is in development that might do away with the need, for short periods of time. When travelling around Spain I found siestas worked really well. I got by better on 2 sleeps a days, and studies of experts have shown the highest performers often take an afternoon nap. Matt's on to something in his tree-house.
Posted by Noel at 05:44 PM | Comments (0)
May 18, 2006
Interesting Stuff 18/05/2006
Amazon is a platform, not a retailer. And an interesting platform at that.
The algorithmization of science is the next step to applying mathematics to problems that have been difficult to model equationally. Humanities students better dust up on their computer science!
Google releases a AJAX framework. Catching up to Yahoo on this one. Does anyone care? Well, pundits say AJAX is no different than eating large quantities of chocolate so I guess a lot of women should.
Posted by Noel at 04:03 PM | Comments (0)
May 17, 2006
More Dagstuhl Talks
Modules
Matthew Flatt
A module is "the way you share code with other programmers"
Module systems in different languages: Python, Ruby
Mutually dependent modules are the first issue
Ruby example: mutually dependent modules sometimes work (when required from files) but dependent on order of execution. Shows that a module definition is a side-effecting operation. Similarly a module may be extended. Hence a module is a runtime concept.
Ruby modules also function as mixins.
MzScheme modules are not side effects. Runtime order does not matter. However expand time (aka static analysis time) order does. Mutually dependencies disallowed. Use units for mutual dependencies. (New!) Unit/signature modules. A module can be written in a unit or signature language. External linking -- the module no longer decides what it links to (cf internal linking, the usual method).
Scheme48 modules, known as structures. Similar to MzScheme units and ML functors. However allows units to export macros, unlike MzScheme.
Smalltalk modules
Alexandre
Smalltalk 80 has no modules. Distribute changesets. Changesets have no composition.
VisualWorks/Squeak packages track their changes and so can be uninstalled. Packages have prerequisites.
Selector namespaces in Modular Smalltalk. They are not reentrant. Seems to have strange scoping rules.
Classboxes allow re-entrance.
CPAN
Mike Sperber
Pragmatics and deployment.
Tools create boilerplate. Standard format for packaging and creation.
Online distribution (CPAN) and shell for retrieval and installation. Can automatically install dependencies.
Perl code may branch depending on installed modules and versions.
Social features (e.g. number of available modules) make it difficult to change the implementation. For instance, you can only have 1 version installed at a time. Cf PLaneT allows multiple versions. However there are still issues with loading multiple versions at once.
Java's Future
Gilad Bracha
JSR-277 attempting to add a module system for Java. Main interest is deployment, versioning etc.
Initial proposed system: modules are like units -- parameterised.
Actual proposed system: no language changes allowed. Instead embed using reflective API. Turing complete therefore any particular implementation possible (first-class, higher-order, etc.)
Module implementations check for prerequisites at runtime. Just code, so anything is allowed. Lots of state.
My comments: As usual for Java has taken a reasonable idea and turned it into a huge hairball.
Soapbox Session
Context-oriented Programming
Pascal Constanza
Make program change behaviour due to context of use (e.g. personalisation) without making it a huge hairball.
Basically a new type of modularity. Similar to aspects, and OO inheritance / overriding.
F-Script
Philippe Mougin
Open source scripting language for Cocoa / OS X
Unifies OO and array programming
Interactive environment.
Source Code Mining for Latently-Typed Languages Dave Mandelin
Extracting information from source code. Perhaps to find out how to use a library from example code.
Example: what are the types of the arguments in a latently typed language?
[Reflection!]
BabyUML
Trygve Reenskaug
Modularity, again.
My comments: I didn't really get this talk, so my summary is brief and perhaps incorrect.
Ambient Oriented Programming
Ambient resources and volatile connections
Non-blocking communication
Reified communication traces
Reified environmental context
OO sans classes to handle code updates
Converge
Laurence Tratt
Pythonic language with compile time metaprogramming ala Template Haskell.
Converge's role is to host DSLs, and so must be very flexible. In a senese a Lisp with curly braces.
Customisable parsing.
Father Time
Greg Cooper
MzTake
Guillaume Marceau
My comments: I've seen FrTime and MzTake before so I didn't take notes. If they're new to you check them out -- they come as part of PLT Scheme
Posted by Noel at 09:47 AM | Comments (0)
May 04, 2006
Dagstuhl 06181
Due to what I can only assume was a clerical error, I was invited to the Dagstuhl seminar on latently typed languages. I accepted before this error could be rectified, and so it is that this blog post comes to you from room 23 in Dagstuhl.
There have been a number of talks of various topics of interest. Being a good student, I've taken notes, which I intend to put online as time allows. You'll have to fill in a few gaps but I hope they'll give you an idea of what has been discussed. The first talk is below:
Cross Language Runtimes
Wolfgang De Meuter, Marc Feeley, Robby findler, Roel Wuyts et al.
Sapir-Whorf
- not true, but illustrates a problem
- the programming language used determines how we see and think about the solution e.g. malleable syntax Java vs Scheme
Ralph Johnson: study at IBM on what characteristics making people learn Smalltalk more easily. Number one characteristic was how many languages you already knew. The more you know the easier it is to pick up new languages.
Matthias F: ppig.org Productivity of programmers is directly dependent on number of languages they know not the number of years of experience.
Cross-languages
- mix several languages, choose the right tool for the job
- problem mapping concepts betweeen different languages
Survey cross language systems
Gambit-C (Scheme) FFI to C/C++
(c-define (f x y) (int int) int "f" "" (* x y))
Defines a procedure called f in C, and wraps Scheme around it.-
c-lambda(inline C)
Matthias F: Scheme is not a safe language as the spec leaves many things undefined.
ProfessorJ
- Java extended with dynamic, Scheme with contracts.
- Java types mapped to Scheme contracts
Robby F: dynamic is like the Any (TST) type for Java. Too much to explain now.
SCM2JS Scheme to Javascript
- Embed Scheme is web pages like Javascript (neat!)
- Compile to JS
SHard Scheme to VHDL
- Allow programming techniques and transformations to be applied to hardware
- Dataflow language: extends Scheme with par like Occam for parallelism
- CPS analysis of control flow
- Allows calls to VHDL components
- Key was to implement function calls -- so full programming language can be comiled to hardware
Soul Prolog and Smalltalk
- Logic programming language interpreted by Smalltalk
- Prolog symbols are Smalltalk objects
- Reason about code, using reflection
- LogicAJ Generic AOP language
- Logic meta variables
- Carma Smalltalk + Soul
- Generic AOP language
- Very dynamic
etc [other examples]
Linguistic symbiosis
- Making data and operations from one language accessible in tohe other language
- Essentially quote/unquote between languages
- Requires careful distinciton between evaluation contexts (between languages) to handle (un)wrapping and (more importantly) semantics
Robby F: sometimes wrappers must stay around to enforce constraints when, for instance, mixing static and latently typed languages.
Andrew Black: copying implementations don't work in parallel systems with mutable state
My comments: There were a lot of questions so the talk ended up being a bit rushed. A lot of time was spent on the survey (and answering questions) which unfortunately left little time to really tease out the interesting issues.
Posted by Noel at 11:38 PM | Comments (0)
April 24, 2006
Programming in Film Making?
In the software engineering literature people like to make analogies between programming and other disciplines, typically civil engineering (e.g. programming is like building bridges). But these analogies don't fit very well. Programming seems to be ill-suited to the extensive modelling that can be done in, civil engineering, nor does it have the same high cost of change (you can't move a bridge easily). Here's an analogy that seems to fit: film making. And I'm not just saying that so I can grow a goatee and hang out with the cool kids (you reading, Geoff? ;-)
Posted by Noel at 04:52 PM | Comments (0)
April 18, 2006
Rexa!
Just like Citeseer and Google Scholar, but better! Rexa is at core a search engine for the computer science literature, but with additional functionality beyond what the others offer. The key improvement is that Rexa knows about more types of data than just papers — it can also track people, for instance. It also has w00ty Web 2.0 tagging, and a dodgy .info domain. If they only had rounded corners and a day-glo colour scheme they'd be a dead cert for an acquisition.
Posted by Noel at 07:31 PM | Comments (0)
October 24, 2005
Neologism of the week
From Shriram Krishnamurthi comes a nice phrase to describe the AJAX applications that are emerging: webtop. It captures succinctly the blend between web and desktop that characterises these applications, and points to a future when the distinction is meaningless. It's early days for the webtop right now: most time is spent just getting the interface to work. My bet for next stop on the road is disconnected functionality. While SF may be always online sometime soon, but it will be a long time before that applies to everyone.
Posted by Noel at 09:50 AM | Comments (0)
September 18, 2005
What is Computer Science?
I love how everyone and their brother has an opinion, and it always stops there. I'd like to take a moment to rant, and point out that opinions do not a curriculum make.
The question of "what is computer science?" has been around for a while. The question of "what goes in a CS curriculum?" has worked the academic circuit for a few years as well. What's great is that every Tom, Dick, and Harry will come up with an opinion, but not a lot of people work hard at actually trying to come up with a justifiable answer.
Dan Zabonini is a Tom, Dick, and Harry. Over at O'Reilly's "Policy Center", he's posted his half-baked thoughts online (http://www.onlamp.com/pub/wlg/7757); it isn't worth an active link. Just before a bulleted list of random thoughts, he qualifies his thinking with this choice quote:
So, what would you include in a modern Computer Science/Software Engineering course? I've started jotting some draft notes below (in no particular order, this is just a stream of conciousness...)
"This is just a stream of conciousness..."
If you want some thoughts on the topic that are not just a stream of consciousness, you might start reading the ACM Model Curricula documents; I've read them all. They're complex, they consider a wide variety of issues, and they reflect the state of the discipline at the time they were written. Smart, hard-working people who have given their lives to the study of computing, who spent a lifetime teaching the discipline, crafted these documents.
Curriculum 68 was incredibly math-focused; it proposed a CS curriculum that, among other things, included thermodynamics and quantum mechanics. Curriculum 78 saw a lot of maths drop from the curriculum, much to the dismay of many; this is a theme that can be tracked through the ACM DL from the seventies to today. (Here are a few links to get you started.) The writings of Allen Tucker and Anthony Ralston are both particularly insistent on the role of mathematics in the CS curriculum.
The Joint IEEE/ACM Curricula 91 and CC2001 expand the scope of the discipline; CC2001 is particularly painful, as it defines an incredibly broad disciplinary set, yet sets up evaluation criteria that, 75% of the time, can be met without a student ever learning to program. Granted, in practice, programs are not run this way, but the criteria (as stated) do not explicitly require programming skill. I stress skill, because in most all CS departments, programming is not taught as a scientific practice, but as a skill- or craft-based activity. Again, there's a literature on these different kinds of knowledge (scientific vs. skill vs. craft), and different theories of teaching and learning associated with each.
The curriculum is under constant revision---often pushed and pulled by industry and technology. Physics isn't pulled about this way; nor is Mathematics, Chemistry, or Biology. Why is it, for example, that the AP curriculum was switched from Pascal to C/C++, and then (in a just a few short years) to Java? The language was incredibly young, untested, and has a convoluted, involved syntax to do simple things. From a first teaching of programming perspective, it's an abomination. You don't think so? Perhaps, then, you've never tried to teach 45-year-old returning students how to program in Java then.
If you're going to walk around suggesting what should or shouldn't be in a computer science curriculum, then perhaps you should begin by catching up on the arguments that have been made for the last 40 years. While you're at it, I think it would be good if you understood the fundamental research on reading and writing that's been done in the last 100 years, the research methodologies that were employed in that exploration, and the significance of the findings made with respect to teaching and learning theory over the last five decades. I don't claim to have a complete grasp of all of this material, but I've made a start---and that's more than 98% of the people who think, just because they can write some Java to transform XML documents in a servlet container, that they have important insights to offer the world regarding the teaching and learning of programming.
Once you've made a start on the literature, then we can have an informed discussion, which is much more interesting than pissing in the wind.
End of rant.
Posted by jadudm at 12:41 PM | Comments (0)
June 30, 2005
A bit more art: Fluxus
untypers keep their eyes on a number of weblogs; one of them is Lemondoor, a LISP-related weblog maintained by jjwiseman. In this post, he points us at Fluxus, a very cool looking real-time coding and live-performance engine for sound and visual effects.
http://www.pawfal.org/Software/fluxus/
We don't like to blow our own horn too hard, but around untyped we do pretty well with a number of languages, and Scheme is a favorite; we have a number of open-source projects written in Scheme, and it drives some of our own research projects as well. Fluxus looks like the kind of platform that we might be able to do some very fun and exciting things with.
Posted by jadudm at 12:00 PM | Comments (0)
June 17, 2005
Those Who Wonder Wrap-Up
On Monday Christian and I went to Those Who Wonder, the degree show for the Graphic and Media Design (Illustration) students from the London College of Communication. In a word: Wow!
There's something wonderful about degree shows. The students realise they're on the cusp: they've finished their training and soon it will be time to try and make an impact on the world outside the University. In some ways it's the best of times, when everything is potential and no limitations are set by the disappointments that from time to time life brings. It's been, well, too many years since I finished my undergraduate eduation, but I recaptured a bit of that feeling by being there.
Ostensibly an illustration course, the show included a variety of work that stretched the definition of illustration to the limit: t-shirts, masks, books, and even videos. I was very impressed. The students had also organised and paid for the whole event, including renting the gallery and organising the drinks and entertainment. I can't recall Computer Science students ever organising an event to equal this!
We took some photos; they're on Flickr under the thosewhowonder tag. They don't really do justice to the vent. There were many cameras at the event so I'm hoping that Nils will be able to get some better photos uploaded.
Of course I have to mention the electronic catalogue we developed for the show. It worked wonderfully!
Posted by Noel at 10:46 AM | Comments (0)
June 10, 2005
A bit of art...
untyped recently had the opportunity to work with Nils Porrmann on a piece that is part of the upcoming Those Who Wonder exhibition showing this weekend.
Nils and his conspirators had developed a number of pieces they wanted to present in a book, but did not like the idea of printing dead-tree versions of the book for everyone who came to the show. The brainstorm was to take a video of the book, and have some way for the viewer to turn the pages of the video/book by waving their hands in the air... or some other apparently magical mechanism.
Christian and I were able to make that magic happen, and the end-result is really quite nice (even if we do say so ourselves!). Our first step was to explore an excellent little application called EvoCam; this program lets you plug in an iSight video camera, drag-and-drop regions on the video, and attach actions to motion detected in those regions.
From there, it was just a hop, skip, and a jump to controlling the video. We wrote a custom application for Nils to easily mark the page-flip points, which we then fed into the AppleScripts for controlling the player. The true genius came from Nils, who realized that the interface to a virtual book should be a real book. So, the viewer turns the page on a real (but blank) book, and the video follows the action. With a little skinning of Quicktime Player, we eliminated the control surfaces, and it looks just great on a black background.
We don't get to do things like this often enough; we like to think that programming is an art, but how often do we actually get to make art with our programming? When the show goes up, we'll get some pictures and video of the... video. It will be great to see people interact with it!
If you're in London this weekend, please feel free to stop in. The whole show looks like it will be great.
Posted by jadudm at 11:09 AM | Comments (0)
June 01, 2005
Google Summer of Code
Google Summer of Code will pay you $4500 if you complete an open-source project over summer. Only two questions:
- When will PLT Scheme join the list of participating organisations?
- Where do I sign up?
Seriously, Untyped and other ventures are keeping me busy enough that participating isn't really viable. However this does look like an excellent opportunity for both OSS projects, and developers with free time.
Posted by Noel at 08:55 AM | Comments (0)
April 26, 2005
In The Beginning...
Everything must have a beginning. This is ours.
Posted by admin at 04:17 PM | Comments (0)
