Sunday Selection 2010-08-22
Reading
The James Franco Project This has nothing to do with computers, technology or programming. James Franco is an actor who is leading a very full life — he’s acting full time (on multiple projects) while working on multiple graduate degrees at different places around the country. Certainly not something that’s recommended for everyone, but it goes to show just how much one man can do if he puts his mind to it.
Media
Dieter Rams – More is Less The design of technological objects has always fascinated me and Jonathan Ives might be the design man of the current times, but this video shows off Dieter Rams’ work and some of his key insights and you can see them reflected in the modern gadgets that we consider to be attractive.
Software
Foursquare I’ve just recently started using Foursquare (yes, I know after Facebook announced places) which is an iPhone, Android and Blackberry app that lets you “check-in” to places you visit and gather points for traveling and visiting. It’s a fun little utility and makes for interesting games with friends (and probably helps generated revenue for local businesses). I’m hesitant to say if it’s actually useful, but it’s definitely worth trying out.
Note: I find that I’m starting to explore less and less and am considering retiring the software section in upcoming weeks. Let me know if you have any suggestions.
Sunday Selection 2010-08-15
Firstly, Happy Indian Indepdence Day! Enjoy your freedom, use it well, it was hard-earned. Moving on…
Reading
The early history of HTML Have you ever wondered how the great World Wide Web came to be? Apparently it’s a bit of a mystery but this article does a good job of piecing things together and giving some insight into how HTML.
What happened to Yahoo! Even though Yahoo still exists and owns some really great websites (like Delicious and Flickr), it seems to have completely dropped off the map in recent years. Paul Graham (whose startup was bought by Yahoo!) takes a look at why Yahoo! seems to have lost its relevance.
Media
Twilio on NY Tech Meetup It’s not that often you see people writing code live during presentations, so when you do see people whipping up live code to create usable webapps and then opening them up to the public, that’s something really worth watching.
Software
Instapaper aims to bring back the practice of reading long-form pieces of the Internet. It lets you save webpages and also helpfully extracts the text from the page. There are iPhone, iPad and Kindle apps to help you read anywhere and anytime.
I’m making a language
Or as some would say I’m starting a new religion. But no, in all seriousness I am creating a new language as part of my senior honors thesis. Why am I doing this? Because I need a good topic for my honors thesis and programming languages are what I’m really interested in. I also want to go to grad school next year for programming languages and I think the best way for me to learn about languages is to make one from the bottom up.
This is the first time that I’m making my own language, but I have been studying programming languages for the last 2 to 3 years. And I want to take those lessons learned and apply them. I’m trying to strike a balance between taking the best of what’s out there and putting in original ideas. There are a lot of great ideas out there but they’re spread across lots of different languages. Some languages like Ruby do a great job of pulling together the best of what’s out there. Under normal circumstances I would be perfectly happy with building a language that does nothing new. But this is an academic honors thesis and I would be really really disappointed with myself if I didn’t contribute anything new.
What am I going to do that’s new? I want to solve a problem that is actually being faced by programmers on the front line and though I admire the theory behind languages, I’m more interested in implementation than pure theory. One clear problem in our field is the rise of slower, parallel processors, multicore CPUs in particular. And we have very little idea of how to use all those cores probably. There are certainly solutions that are being proposed — threads, software transactional memory, Actors, so on and so forth. But these tools are generally considered beyond the reach of everyday programmers. What most programmers are acquainted with is object-oriented programming. My idea is to take an object oriented language and make it concurrent from the bottom up. The naive idea (that I have to significantly research and refine) is that each object is its own thread of operation. This is similar to the Actor model and I’ll need to study and think more to see how to differentiate between that and what I want to do.
But as I said there are a lot of good languages out there with great ideas and I’m going to shamelessly take as many of them as I can. Everything will be an object, but it will be prototype-based (a la JavaScript), not class-based. Syntax-wise it will be elegant and homoiconic: that is there will be as few special syntactical constructs as possible and programs will be data structures in the language itself. This is to lay the groundwork for macros, though I probably won’t be getting to that any time soon. However, it will have first class functions from day one and I’m going to try like hell to make everything (or make it possible to make everything) first-class. And this isn’t just for functions, I want to extend it to tests, constructs and even documentation. All of these are good ideas that have been tried and tested before, I’m just combining them in a new (and hopefully better) way.
Technology aside, the language will be completely open source, probably under the GPL v3. As for the name, I’m probably going to call it Parley. I want a name that implies discussion. Plus it opens up a whole world of pirate-related metaphors and names for later use and I love word-play. I don’t plan on really working on it until the end of August, though I will be reading up and throwing ideas around. Code will be on Github as soon as I have something that works.
Sunday Selection 2010-07-25
Reading
Emacs vs Vi is rooted in the love of Lisp — This is an older article I came across a few days which shows how the universal programming powers that define Lisp are at the root of the Emacs/Vi divide
Have generics killed Java in which the authors argues that generics have harmed Java and that static type checking is a dead-end
Media
Public Static Void — an excellent talk by Rob Pike that discusses language and evolution and why our languages mostly suck
Software
Firefox Alpha with TabCandy is an early test release that contains a very interesting new interaction interface for tabs which I think is a step forward. Now if only I could run it all from my keyboard. Be warned that no extensions will work.
Bonus: Here’s the TabCandy video
