30.12.05

The Perils of JavaSchools, by Joel Spolsky

Maurice Naftalin and Peter Buneman both sent me pointers to this blog entry on the same day. (Peter claims to be the faculty member described in the entry as having almost killed the writer.)

My favorite quote:

I have never met anyone who can do Scheme, Haskell, and C pointers who can't pick up Java in two days, and create better Java code than people with five years of experience in Java, but try explaining that to the average HR drone.


And another favorite quote:

Without understanding functional programming, you can't invent MapReduce, the algorithm that makes Google so massively scalable. The terms Map and Reduce come from Lisp and functional programming. MapReduce is, in retrospect, obvious to anyone who remembers from their 6.001-equivalent programming class that purely functional programs have no side effects and are thus trivially parallelizable. The very fact that Google invented MapReduce, and Microsoft didn't, says something about why Microsoft is still playing catch up trying to get basic search features to work, while Google has moved on to the next problem: building Skynet, the world's largest massively parallel supercomputer.

7.12.05

LINQ: Microsoft goes functional

I finally had a chance to properly look at LINQ.

This is competitive with the DB end of Links. One can write (typed) expressions in the programming language that compile into SQL access. I would say that Links integrates this in a slightly smoother way than LINQ, but the difference between the two is small. So if Links is to establish itself, it will need to focus on client-server integration rather than server-db integration.

What's most interesting about LINQ is the number of ideas from functional programming and programming languages that it incorporates. Functional programmers will see many old friends here, including lists (masquerading as IEnumerable), lambda expressions (with compact syntax: v => e), fold, and the old idea that syntax in the language is just sugar for a sequence of function calls. They have also brought in the important idea of open classes (where one organization can add methods to a class defined by another, without altering the source code). So a lot of good, basic programming languages stuff is sneaking in under the LINQ banner.

I presume Eric Meijer had a lot to do with this. Well done, Erik!

23.11.05

Ontology is overrated

Recommended by Jeremy Yallop.

Hugh and Dave's Wine Store

Example Web site to implement in Links, and to evaluate (recommended by Rodney Topor):

Hugh and Dave's Wine Store, from Hugh Williams and David Lane, Web Database Applications with PHP and MySQL, Second Edition (O'Reilly, 2004).

21.11.05

Jane Street Capital is recruiting OCaml programmers

Here is their ad:

OCaml Jobs at Jane Street

Are you an OCaml hacker looking for a job where you can program in a good language? Where you can do work that's technically challenging and engages with the real world? Where the people in charge actually care about writing good code? Then send us an application.

Jane Street Capital is looking for people interested in systems administration, software development, and quantitative research (and potentially all three in the same day). We are a rapidly growing trading firm that specializes in bringing programming skills, mathematical tools and scientific thinking to the problem of trading on the financial markets.

We're looking for people with:

* A commitment to the practical. One of the big attractions of our work is the opportunity to apply serious ideas to real-world problems.

* A well-rounded background in computer science. We use a variety of programming languages, so we need people who are comfortable learning new programming paradigms. Our primary programming language is OCaml, so experience with ML or other functional languages is important. Applicants should also have a strong UNIX/Linux background.

* Great communication skills. We need people who can explain things clearly and concisely, who can read dense academic papers and write good documentation.

* A strong mathematical background. This is a must for candidates interested in research, and includes a good understanding of probability and statistics, calculus, algorithms, etc. We draw on ideas from everywhere we can, so we value interest and experience in a range of scientific fields.

Jane Street is an open and informal environment -- you can wear a t-shirt and jeans to the office. The lunches are free, the kitchen is stocked, and discussions are always lively. And it's an environment with a focus on learning, both through formal seminars and classes, as well as through day-to-day conversations with colleagues. The pay is good, and advancement is rapid for people who do well.

If this all sounds too good to be true, there is a catch: we only hire top-notch people. If you think you're up to it, send us an application. We're currently looking for full-time positions as well as summer interns for next year.

Send an application to Yaron Minsky including a resume and a cover letter, as well as some sample code if you have anything you're particularly proud of.

17.11.05

W3C tackles rich web clients

Rodney Topor for points out there is a new W3C activity on rich web clients.

Web APIs
Web applications

Computer Science Unplugged

Don Sannella writes:


I wrote:
> there is some
> child-friendly stuff around about algorithms, for instance a card
> trick that illustrates a simple error-correcting code. (I recall
> seeing a book full of such things, and will try to track it down.)

"Computer Science Unplugged" by Tim Bell, Ian Witten, and Mike
Fellows. I found a copy on the web at

http://www1.idc.ac.il/csu/CSU%20book/unplugged%20book%20part1.pdf
and so on, up to
http://www1.idc.ac.il/csu/CSU%20book/unplugged%20book%20part1.pdf

or buy it at

http://www.lulu.com/content/166249

Don

7.11.05

FP in the real world: Raschke on XML in Python

Many thanks to Francesco Cessarini, who organized an informal get together of Erlang programmers at Cafe Royale on Sat 22 Oct.

Afterwards, Robert Raschke sent me a description of how he uses FP in Python to process XML, not as an academic exercise but as part of his day job. Follow the link above. Thanks, Robert!

26.10.05

SPLS, 25 Oct

The Scottish Programming Language Seminar goes from strength to strength. We consistently have thirty to forty researchers coming from across Scotland, and the range and quality of talks is excellent. All of this with very lightweight organization and coordination.

About thirty souls turned up at Stathclyde, coming from Glasgow, Edinburgh, and St Andrews, and visitors from as far away as Australia. There were five talks, ranging from semantic theory to hardware design. Alex Simpson described an elegant (and beautiful and surprising) way to extend Reynold's semantic parametricity to Moggi's computational lambda calculus. Wim Vanderbauwhede presented a Scheme-like language for programming "Systems on a chip" consisting of hardware modules interconnected by a chip-wide network. Greg Michaelson introduced Hume, an attempt to put fp to work on real applications producing embedded systems with guarantees on the time and space used; they are applying the system to real vision problems in automated vehicles. Joe Wells provided a clear introduction to a calculus for linking, with strong technical results (can be analyzed in close to quadratic time, where the first analysis proposed in this area was NP complete). I liked that he focussed on the simplest possible calculus that could express the problem. Edwin Brady explored how a dependently typed language similar to Epigram can express resource bounds; Epigram is beginning to look familiar to me and I quite like it.

Many thanks to Strathclyde and David Lievens for organizing the meeting. The next will be at St Andrews in January 2006.

Draggable lists

Ezra proposes draggable lists as an exemplar of what we should be able to do with interactive Javascript in web applications (sometimes called AJAX). Great example!