March 7, 2008 | Be the first to comment
The next BayFP meeting is Wednesday, March 12th. Something a little different this time (although with some connections to Burak Emir’s talk last month about pattern matching in Scala); I’ll be speaking about Twelf.
(more…)
Posted by: Jake
Categories: Technology, Programming
January 7, 2008 | Be the first to comment
This month’s BayFP meeting is Wednesday, January 9th. We’re fortunate to be overlapping POPL 2008, and have arranged for Philip Wadler to repeat a talk on “Well typed programs can’t be blamed“. The talk will be held at 7:30pm in the Nob Hill Room at The Stanford Court Hotel, San Francisco.
This joint paper with Robby Findler introduces blame — from contracts — to a type system with casts. The authors then show that any failure of a cast from a dynamically-typed term to a well-typed context must be blamed on the dynamically typed term (they call this positive blame). Similarly, any cast from a more-precisely-typed term to a less-precisely-typed context must be blamed on the less-precisely-typed context (negative blame). Thus, the title of the talk: well-typed programs can’t be blamed.
The paper concludes with the observation that programming languages with libraries, development tools, user communities and other network effects often get adopted faster regardless of technical superiority. The authors propose that integrating dynamic and static typing into a single language may form a better basis for comparing the strengths and weaknesses of each.
This talk is not just for type theorists and functional programming enthusiasts; many professional programmers work with both static and dynamic types every day. As the authors point out, Visual Basic already supports both static and dynamic typing, and similar integration is planned for Perl 6 and Javascript. One way or another, if you program for a living then you’re probably already switching between the designs, although usually not within a single language.
Several of us from Skydeck will be there on Wednesday and we’d love to see you there. The talk is free, even though it’s being held in the same hotel as the ACM conference. Speaking of the conference, drop us a line if you’ll be in San Francisco for it. Some of us will be attending affiliated events earlier in the week.
Posted by: Mike
Categories: Technology, Programming
August 8, 2007 | 2 Comments
A few months ago I wrote about Motorola’s embrace of open platforms. Several people pointed out that Motorola had never committed to releasing SDKs for writing native Linux apps, suggesting that the company’s investment in Linux was only for the benefit of Motorola and its carrier customers.
They had been hinting at it for a long time, but yesterday at Linuxworld Motorola confirmed that they will be opening up to third-party developers. Cynics may focus on the term ’select developers’, but I think this is consistent with a phased release of a major development platform.
Motorola also announced a set of web development tools based around WebKit, which represents another step towards open standards, although in this case they’re playing catch-up to Nokia and Apple. Motorola continue their campaign against vowels: collectively, their Java, Web, and Linux development platforms are now called MOTOMAGX.
Finally, they confirmed that the Razr2 will be the first Linux-based phone from Motorola to ship in North America. (You can buy an unlocked Ming at CompUSA or Amazon.com, but no carrier sells it.)
It’s not on sale yet, but we got our hands on our first Razr2 on Monday night. We don’t normally do this, but we thought we owed it to the gadget fiends out there to post the unboxing …
(more…)
Posted by: Jason
Categories: Technology, Phones
August 3, 2007 | 5 Comments
We love OCaml at Skydeck, as Jake has written about before, and we often hear from programmers with questions and comments about it. Some love OCaml, some don’t know anything about it, but many have it on their list of languages to try yet haven’t gotten around to it. Well, it’s pretty simple to get up and running — just download, build, and start hacking!
Really, it’s that simple. If you want to get there as quickly as possible, follow these five steps:
(more…)
Posted by: Mike
Categories: Technology, Programming, ocaml
June 7, 2007 | 12 Comments
What is a full-stack web framework, and what is it good for?
Back in the day (which day being 1995 or thereabouts) there was essentially one web framework. It was a Perl module, called CGI.pm, which decoded the CGI request and provided functions to construct HTML and a CGI response. (CGI.pm is still around, but the past tense adds to the mood of misty reminiscence.) It didn’t have a template system (but Perl “here documents” let you embed HTML directly in your script), or session management (you rolled your own—it’s not hard), or a persistence layer (you used the filesystem, or DBI.pm to talk to SQL databases), but it was simple, easy to use, and easy to understand.
Now, after more than a decade of progress, we have this gigantic Java stack trace of a system running various frameworks and libraries. Somehow I don’t think this monster of delegation is the “full stack” that people have in mind. This setup does not seem easy to use and understand. How did we get here? As usual, with the best of intentions. We’re programmers, so we invented abstractions.
(more…)
Posted by: Jake
Categories: Technology, Programming
May 17, 2007 | 6 Comments
When Motorola announced their 2007 device collection this week, some people were disappointed. Three of the phones debuted in February at 3GSM and the fourth is yet another version of the Razr. In the year of the iPhone, the Prada phone, the Nokia N95, and even the Helio Ocean, Motorola looks weak.
But in one very important respect, Motorola is ahead of all these competitors. Every phone in their 2007 collection is based on an open development platform: Symbian, Windows Mobile, or Motorola’s new home-brew version of Linux, which they call Linux/Java. The iPhone, the Prada phone, and the Helio Ocean are all closed devices. (more…)
Posted by: Jason
Categories: Technology, Mobile Market
May 16, 2007 | 6 Comments

In fanciful moments I like to think of a running program as a little spaceship following a trajectory through the computer’s “state space”–the space of possible values of each of its memory locations. This is a big space (2 to the power of the number of bits of memory in the machine) so easy to get lost in. The problem of writing a correct program is how to keep the spaceship on course.
If the ship is on course it’s easy to move it in the right direction. If it’s gotten off course, we have to figure out where it is and make some correction to get it back on course. If we don’t realize it’s gotten off course we’ll move it in what we think is the right direction, and probably make things worse. If we get too far off course we might not be able to recover at all. We’re better off staying on course in the first place.
(more…)
Posted by: Jake
Categories: Technology, Programming, ocaml
May 7, 2007 | Be the first to comment
Last week was abuzz with discussion of RIA. I credit Hinkmond Wong’s post about porting F3 to Java ME with starting it, but most would point to Silverlight. Discussion predominantly revolved around desktop browsers and web downloads, although this video demonstrating Silverlight for Windows Mobile looks great. But really, either or both can be extremely significant in mobile. I hope it’s as more than just another RIA platform though. Rather than restrict them to a constrained environment, I’d like to be able to embed them in downloaded applications that can extend the functionality of each in order to take advantage of features native to the phone.
Stepping back briefly, Silverlight is Microsoft’s cross-browser plugin for delivering .NET Web applications. F3 is a Java scripting language created with the goal to make GUI programming easier, with nice features over something like JavaScript: static typing, type inference, and the ability to import and call any Java class.
The competition for RIA in mobile will be stiff. However, the ability to embed and extend these technologies in applications is largely untapped, even though it could provide a unique solution to a fundamental problem in mobile development: when you can’t easily update your installed code, it’s hard to provide dynamic functionality and features. The Orbit project will embed OpenLazlo into Java ME, but it’s not clear that applications will be able to extend its functionality. Silverlight and F3 are each equally poised to provide this if they:
- Allow the installed application and embedded code to interact.
- Allow the runtime to be extended (e.g. platform invoke or JNI).
- Provide a user-controlled security policy as opposed to requiring a complicated signing process, or worse, a more restrictive sandbox.
Both companies have unique advantages supporting their solution. Sun has the nearly ubiquitous distribution of Java ME on mobile handsets, however today that is in the form of MIDP/CLDC, whereas F3 (and Orbit) require CDC. Microsoft owns a mobile operating system which could allow for tighter integration, although Silverlight on the desktop is a subset of the .NET runtime (but so is the .NET compact framework).
We saw some of Microsoft’s cards last week, but not many in terms of mobile. With Sun, we’ve seen activity on F3, PhoneME Advanced, and the acquisition of SavaJe IP, so we can hope they are heading in this direction. To be sure, neither company solely dictate the functionality of phones, but with JavaOne this week, hopefully Sun will provide some leadership.
Posted by: Mike
Categories: Technology, Programming
May 6, 2007 | 1 Comment
Jason’s post about the FCC’s “four freedoms” calls to mind the distinction between “open-source software” and “free software” (free as in speech) . While the term “open-source” focuses on what you get (the source), the words “free software” draw attention to your freedoms: to use, study, and modify the software without restriction. These freedoms are in the same spirit as the FCC’s freedoms, and are similarly contested in this era of walled gardens and locked-down platforms.
Free software may mean different things to you, depending on who you are. If you’re a hobbyist or run a small business you might like that it generally comes at no cost. Or you might be idealistic about intellectual property and feel (with Jefferson) that “he who lights his taper at mine, receives light without darkening me”. Maybe you see a business opportunity in supporting the ferment of activity around free software.
But if you’re a programmer, the importance of using free software instead of proprietary software is that it makes it much easier to do your job. Programming is reasoning about code, and the whole point of keeping software proprietary is to prevent you from reasoning about what goes on inside it.
(more…)
Posted by: Jake
Categories: Technology, Programming
April 27, 2007 | 4 Comments
Making software that works is really hard. I don’t say this because I’m a programmer and I want it to sound more impressive; I wish it were easier. But we programmers put endless hours into getting it right, and still your laptop blue-screens, your phone reboots, the rocket crashes into Mars.
The words we use to describe making software (in job ads, for instance: develop, design, write, architect, build, engineer) are glibly positive. They make it sound like a monotonic process, like laying bricks. But any programmer knows that working code comes in fits and starts. Most of the hours go not into designing or building, but into understanding: what a library call actually does, what’s happening in some code you’re trying to modify, why a bug doesn’t show up in the debugger. (This is why it’s hard to estimate how long a programming task will take; to estimate the task you have to understand it, but it’s the understanding that takes the time.)
Perhaps the best way to describe it is this: making software is reasoning about code. The methods of reasoning about code are the same as those of math or logic - considering all the cases that might arise, arguing by induction, breaking a larger argument into parts - although in programming we usually do it informally. In order to do a better job of programming (to program faster, with fewer bugs), we have to do a better job of reasoning about code.
In my next few posts I’ll talk about a few ways we’re trying to do that at Skydeck.
Posted by: Jake
Categories: Technology, Programming
Next Page »