Asus recently came out with the Eee. It’s a very small laptop (7″ screen, weighs less than a kilogram) running Linux.
It can be used by cute little children.

and nice looking women on the beach (is it me or does this look like a photoshopped picture?).

Why is this laptop interesting to me? Two reasons: it’s really small and cheap ($300/300 euro) and it runs Linux by default. Linux still doesn’t have a big market share on the desktop. It has a big share of the server market and even an increasing share on devices (music players, PDAs, smart phones), but still not that many people use it on the desktop. There are, of course, many good reasons for this (software compatibility, user-unfriendliness, defacto standards). What makes the Eee interesting is that it’s not really suitable as a “main” computer. It’s too tiny. This makes it feel more like a gadget, an additional computer you can just use on the road or for presentations. It’s a powerful one, however. I think that, if lots of people buy this kind of device, they will realize it does mostly everything they need (other than being really tiny). You can browse the web, read email, make presentations. They may see that Linux can be user friendly (the UI of the Eee seems really simple).
It might just change Linux’s image and adoption a bit.
Either way, I want one. Just don’t know what I would use it for.
More info on the Eee (including specs).
Thomas asks in response to my brief post on WebDSL:
Do you think that languages like this will be the Next Big Thing in web development world?
The MoDSE project that I’m working on has the belief that languages like this will not only be the Next Big Thing in the web development world, but in software engineering in general. We work with big companies such as Atos Origin, Getronics PinkRoccade and others that are also taking their first steps in this kind of software development. “This kind of software development” being model driven engineering.
The general idea is that we feel in software development you still work at a very low level. In web applications you still deal with request parameters, type checking them, handling sessions, writing database schemas. We want to abstract from all that and let you work at a higher level of abstraction. In MDE this is the general idea: come up with some language that offers you an as high level of abstraction as is suitable, then use this language to describe/build your software in. Then compile this high level language to the low-level language that you otherwise would have to code in. Of course the question is what is a suitably high level of abstraction, and how do you design and implement a compiler for such a (domain specific) language. Both these issues are things we’re researching in this project.
The “E” in MoDSE, stands for Evolution. Once you come up with a language to describe your applications in, how do you evolve your program. What if, for example, I would add a field to an entity in my WebDSL application. That would mean the database schema has to be adapted and still the current data should be retained. Adding a field is a simple one to solve; it becomes more difficult when you start moving fields, or renaming them. But this only one type of evolution, another is evolving the language itself. An example is syntax changes. In an old version of WebDSL an entity was described as follows:
SomeEntity {
title :: String
}
But then we decided it really needed a keyword:
entity SomeEntity {
title :: String
}
The result of this change was that all our old WebDSL software no longer compiled. We had to add the “entity” keyword everywhere. Ideally you would automate this process, your applications should evolve with the language.
Just some issues we’re looking at.
I know this is late (what we call in Dutch, for some odd reason “spuit 11″), but either way, here’s my brief take on the Kindle.

The Kindle is Amazon’s new e-book reader. Personally I think it looks like crap (probably everybody agree on that), it looks like a ‘90 PC crushed by a fridge falling from 10 feet high. But that’s not the point. The point is that it might just be the first mass-market e-book reader. The question really is are e-book readers a good idea. And I think they are. Although I do have to admit it’s kinda nice to be able to fill up a number of shelfs with books, at a certain point you just have too many of them. I myself have about 7 boxes full of computer science book still at my parents’, I don’t have room for them in my new apartment and, honestly, it’s unlikely that I will every need them again.
E-books solve that problem.
What I’ve wanted for a long time is a cheap e-book reader to come out, nothing fancy just a reasonably sized device with a nice-to-read screen on which I could put PDFs to read. That would be great, especially now that I’m a Ph.D. student the papers on my desk just keep piling up and it doesn’t look pretty. In fact I found that it’s generally a better idea to throw out a paper after reading it, because in this huge pile it’s faster to find it on my hard drive again and print it, than to sift through all these old papers in my drawer.
E-books solve that problem.
What I found the most interesting about the kindle as an instance of an e-book reader (God, I’m such a computer scientist, talking like that), is its wireless capabilities. It doesn’t use Wifi, it uses the mobile phone network for connectivity. Using that you can order books from Amazon and read them on your Kindle straight away. Apparently, you can also e-mail a PDF to some special e-mail address and it will appear on your Kindle as an e-book.
Whether this is a good model remains to be seen, and the Kindle might just flop (as most people seem to be expecting), but either way at some point there’s going to be an e-book reader that will work.
And does not cost $400.
Now it’s time to clean up my desk.
I intend to make my posting here more regular from now on, basically I haven’t been posting anything at all lately. So here’s the first one.
As you may or may not know, I recently (well, three months ago) start with my Ph.D. It’s part of the MoDSE project (Model Driven Software Evolution). I have a post in my drafts folder about what exactly that is all about, but I have a hard time finishing it, so I’ll just briefly explain what I’m work on at the moment.
We’re working on a DSL (Domain Specific Language) for the web, called WebDSL (better website, built with WebDSL is coming up). The idea behind this language is that web development today always consists of combining many different technologies and languages. Some examples are HTML, CSS, PHP and some database. WebDSL attempts to combine all these things into one language. It has language constructs to define page structure, business logic and data access (through embedded HQL, a kind of SQL). Layout currently is still a separate thing (done in CSS), but this will be integrated as well. The nice thing about this is that not only do you have to learn half a dozen frameworks and languages, it is also easier to check that all the different components work well together (you can do type checking for example).
We translate WebDSL applications into a J2EE applications, using Java, JSF, Hibernate and SEAM (running on JBoss), a script will then compile all that and you will end up with a .ear file that you can deploy on any JBoss Java application server. For the parsing and translating we use SDF and Stratego/XT.
WebDSL is essentially an exercise in designing and building such programming languages geared towards a particular domain. There will be more information when the first WebDSL version will be released, (planned on December 20th), but here’s a piece of WebDSL code (a very bare-bone wiki system), so you can get a flavor of what it looks like (the only thing missing are some simple templates and the CSS):
application com.example.wiki
description {
This is an automatically generated description
}
imports templates
section data model
entity Page {
name :: String (name, id)
text :: WikiText
}
section global variables
globals {
var mainPage : Page := Page {
name := "HomePage"
text := "This is text for the main page.\n\n
Here's a link to [[page(AnotherPage)|another page]]"
};
}
section pages
define page home() {
main()
define body() {
section {
header {"All page"}
list {
for(p : Page) {
listitem { output(p) }
}
}
}
}
}
define page page(p : Page) {
init {
if(p.text = "") {
goto editPage(p);
}
}
main()
define body() {
section {
header {output(p.name)}
output(p.text)
section { navigate(editPage(p)) { "Edit this page" } }
}
}
}