July 3rd, 2009

Pascal’s Wager for environmentalists: You’re being silly.2

Every so often a well meaning famous person re-invents the notion of the environmentalist Pascal’s Wager. The case being made works like this:

We drastically reduce pollution We don’t change much
Earth is doomed if we don’t drastically reduce our damage to the environment. Damage: 0 Damage: Infinite
Earth will be allright no matter what we do. Damage: couple billion dollars Damage: 0

The theory then goes: Even if the odds that the earth is actually doomed unless we make some drastic changes is very low - then the above table should make it obvious that anything above 0% is more than enough reason to get drastic and do get started right now. After all, multiplying the odds will always get you to -infinity if the world decides to keep going as we are.

This argument is often touted by crackpots. See Exhibit A. That’s okay - it takes all sorts to make a world. However, I get personally miffed when otherwise very smart people fall for this logical fallacy. I get even more miffed when they somehow proudly proclaim how they repurposed Pascal’s Wager. Pascal’s Wager is itself a fairly obvious fallacy. Normally, smart people are supposed to be able to add two and two together. Maybe that M. Night Shyamalan movie was on the something and tree hugging makes your brains fall out of your ears. I don’t know what it is.

Thus, a public service for all those who experience temporary bouts of idiocy when it comes to the environment. It happens to all of us, don’t feel bad.

I’ll fix that table for you, should make it obvious why you should stop talking about Pascal already:

We drastically reduce pollution We instead focus on space flight (a big source of pollution if you do a lot of it)
Earth is doomed if we don’t drastically reduce our damage to the environment. Damage: 0 Damage: Infinite
Earth will be allright environment-wise, but in 20 years a comet will obliterate this planet. Damage: Infinite Damage: 0

If you think that particular doom scenario is preposterous, I will posit that earth being utterly doomed when we don’t fix up the environment is similarly preposterous. There are also lots and lots of other doom scenarios: A killer virus, aliens, global thermonuclear war, a world-wide revolt due to male overpopulation and religious fanaticism due to continued poverty, corruption, and civil war in the third world - pick your poison. You’ll find plenty of theories about how the earth could end if we aren’t careful.

So, we should fix all of that right?

Right. Except earth is a place of finite resource. Human creativity is still a finite resource. We can’t focus on all of that equally. We have to make choices.

And this is where I, and other sane and right thinking individuals like Bjorn Lomborg - who is one of the few true environmentalists I know of, stand: The only way to get out of this dilemma is to create win-win scenarios. Running around like a headless chicken screaming bloody murder about the environment, using cockamamie theories like the Environmentalist’s Pascal’s Wager, the more we’re going to really risk ending up doomed. There are so many things we could do that would actually save the environment, and be a net positive effect on mankind economically and scientifically, but virtually none of it gets done. Instead we spend all our time lobbying for people to become just as treehugger crazy and for utterly ineffective corn ethanol. D’oh.

There’s also a long-standing tradition in certain more fanatical environmentalist groups to be completely unreasonable, and make downright retarded decisions. Every hip american buying a Prius is one fine example: Considering the trade-in value is so worthless that most of them hit the scrapyards inside of 15 years (those batteries just don’t last all that long), you should probably just buy a Hummer. Mother Earth would be more grateful. Inane FUD spreading of nuclear power plants is another one: It’s a very tough choice, but France has been doing just fine with it so far. If the french can make nuclear safe enough, then what the heck is everybody whining about? We should at least take it a bit more seriously.

Apple is being torched almost daily for not being green enough. This is the company that make the notebook computer as the only computer you own popular. The amount of power and material saved is enormous. Green peace and company should grovel at Steve Jobs’ knees and thank him for the good he’s done. Of every soul I meet that proclaims they are an environmentalist, 99% of them are short sighted bags of hot air. It annoys me so.

The latest fine example of environmentalists being absolute idiots is 2 google searches generate 7 grams of co2.

Riiiight - and driving to the library and spending 5 hours looking it up there is much better for the environment. How short-sighted can you get? Google, and the internet in general, is the best most scalable thing that has ever happened to the environment.

I’m not a global warming denialist. I strongly feel that we, as mankind, ought to be doing more. I just get annoyed when otherwise smart people turn into blithering idiots, is all. Please, for the sake of this planet - use some common sense. I thank you.

The dinosaur suicides.0

Quoth Stephen Fry about the new Blackberry Storm:

An accelerometer is a device that lets an object know which way up it is. That’s just what the RIM corporation itself seems to need, for it is clear that with the release of this dog they don’t know their tits from their tibias.

And his isn’t the only brutal review of the storm around. It seems to be universally panned to the point of hate.

It’s RIM’s attempt to build an iPhone. It even includes one actual honest attempt to innovate: Its touchscreen clicks down physically like apple’s new macbook trackpads. They screwed it up royally, but that’s sort of the point: These dinosaurs of the old age tend to run themselves full tilt into a wall when faced with revolutionary competitors. When you’re the market leader, you don’t make a product that is way more immature than the new competition. Everyone that values stability and patience, the one market you get for free, goes running to your competitor. What could possibly possess RIM to screw up so gigantically?

Palm self destructed spectacularly when it faced some marginal competition, but the handheld device market isn’t the only industry that has kindly committed seppuku to let the new blood run rampant. Microsoft is finally getting some actual pushback on many fronts and in response they hand over the keys to the kingdom to Steve ‘chairsbane monkeydance’ the marketer. A marketer? Microsoft? Bill Gates would turn in his grave… is what we would have said if he wasn’t the guy that made that happen. Is self-destructing microsoft part of his new humanitarian efforts? Microsoft’s recent OS release, utterly ignorant of a new world filled with notebooks, netbooks, and mobile phones, all of which want slick kernels that know how to conserve power, is such a fantastic dud that it defies comprehension. That took 7 years?

Piracy became a somewhat serious problem when it became easy and pedestrian. Before napster, a dedicated individual could pay 5 bucks a month for newsgroup access and download -whatever- he could possibly want as fast as his pipe can carry it. But you need some serious technical knowhow. Napster and its children, and even bittorrent, via sites like the pirate bay, make fast transfer easy for everybody. -THAT- scares the pants off of the RIAA and the MPAA. How do they respond? By making the piracy easier than the real thing by charging prohibitive prices for legal online downloads, getting stuck in a new format war, and adding unskippable piracy warnings in front of every movie. The only way I can make sense of this move is if the MPAA is kindly downing the family size bottle of sleeping pills in order to make way for a new digital distribution age.

How about the car industry? “Bailout”. Nuff said. The sheer insanity of the leaders of the big three in the US has already been covered far better in numerous other places.

What in the world possesses these companies to self destruct so quickly when faced with something they do not understand?

One thing I do know: Without the convenient propensity of the big hulking elephants in the industry to shoot themselves in the face, the world wouldn’t be moving forward nearly as quickly. Thank you, dinosaurs. Thank you very much.

Python3k: Compatibility fail0

The blogosphere is rapidly heating up with dismay and sometimes outright anger at the bungling of the Python 3000 release. I walked into the #django IRC channel and I got my head bitten off for asking which version of python I should use for django. (After the channel cooled down some, I was able to ask why: Evidently every 5 minutes someone asks if django is py3k compatible).

Herein lies at least some vindication for Sun’s ‘backwards compatibility trumps everything’ mode of thought regarding java releases. You must be backwards compatible.

What intrigues me some is that this python3k release could have been done so much nicer, and it wouldn’t have been too difficult:

Start with a ‘version’ indicator in the source. Something like ‘python 3′ right at the top of the file (it would be legal nowhere else, to avoid having to declare a real new keyword). This then gives the interpreter the opportunity to parse the file differently, depending on version. Lack of version indicator means its assumed to be python 2.6 (the last pre-3 release).

Now, some py3k changes may not be easily solvable even if the interpreter knows what the code was written for. But the simple stuff, such as py3k ‘range’ being the same as py2k’s ‘xrange’, and py3k no longer having an xrange function at all, could easily be handled by a backwards compatible py3k interpreter. With some effort I bet you could build a py3k that is 100% backwards compatible in this fashion. Python is a dynamic language with duck typing, which makes this proposal quite a bit easier compared to a language that uses nominal typing, such as java. So why hasn’t python taken this option?

I have no idea.

That’s not all she wrote though: I am still waiting for a language that offers infinite smooth upgrade ability for its own language, its own core libraries, and for any third party library that chooses to offer it. I’ve tried to work this out and its not exactly simple to build such a programming language, but it can be done: Each library that wants to offer backwards compatibility can break its API and offer adapters that essentially build a ‘view’ that acts like the older API. This way code expecting the old API can work with code that expected the newer API without breaking it. A few languages / loaders offer the ability to load whatever version a program expected, but those tools simply don’t work if one module of a program expects v2, and the other expects v3. That’s why you need views, so that the actual library itself can always be at the latest version. Also should be great for security updates: You now never need to update multiple versions. Just update the latest version and make sure the adapters work well.

Philips: Customer Service doghouse.0

That was an interesting experience. Frustrated that a giant, recently bought, Philips TV’s remote control is incapable of controlling the philips satellite box next to it, without much help from the user manual, I decided to ring them up.

Maybe Seth Godin is slipping a little, but Seth Godin’s simple missive: Make a customer happy when he calls. Otherwise, do not answer the phone! - is very much true.

Before I called, I was mildly annoyed that philips hardware can’t work with philips hardware. After I called, I was seething mad at their boundless idiocy.

After half an hour getting the runaround, the conclusion was that the Philips TV and the Philips satellite receiver aren’t compatible. It was my fault for not realizing it, according to Philips, because ‘STB’ stands for Set Top Box, and not Satellite Box. This was a fairly basic mistake so they wouldn’t try to fix it by e.g. sending me a Philips Universal Remote Control. When I pointed out that their own technical support staff are just as clueless as I am (given the runaround I’ll describe below the fold), and that their standards seemed to be set just slightly too high, the service rep got angry with me. Specifically, she was quite perturbed about me not accepting her apologies. That just bewilders me. I thought it was a tech support number, not a “We’ll listen to your whines and agree with you, for 10ct a minute” service number. Why would her personal apology that their hardware sucks help?

How come I, a techno geek, knows more about marketing than a supposed world leader in this sort of thing?

Well, congratulations, Philips. That’s the last time I’ll ever buy from you.

(more…)

Programming as Art - 50 in 500

Guy Steele and Richard Gabriel’s quixotic wanderings through the history of programming languages is something every programming afficionado should appreciate. I really enjoyed it.

http://blog.jaoo.dk/2008/11/21/art-and-code-obscure-or-beautiful-code/

I’m selling my white macbook.0

UPDATE: It’s been sold. Via the blog no less. Thanks, all!

If you’re interested, let me know. I’m looking for about 650 euros.

1.5 year old, mid-2007 model. Looks as good as new because I’ve kept it ‘docked’ virtually all the time, and transported it in a protective bag otherwise. The topcase has been replaced half a year ago (for free due to a small crack), which does mean that this new topcase certainly won’t crack as it has been built after Apple figured out that particular problem.

Extras:
- A macvatar topcover sticker which makes your mac unique and easy to find at barcamps and the like.
- An extra battery from fastmac, which isn’t quite as good as apple’s original battery, but on the plus side, the apple battery is in excellent state because it hasn’t been used as much.
- Protective cover, Tucano brand.
- mini-DVI to VGA dongle
- mini-DVI to DVI dongle
- original box, original CDs.

The system’s stats:
- 250GB harddisk (I replaced the old one).
- Core2 Duo 2.0Ghz processor
- 2GB RAM geheugen
- Combodrive (dvd-rom, cd-rw)
- no dead pixels.
- I’ll clean up the harddrive and leave leopard on it for you.
- powerbrick.
- 2x USB 2.0 port
- 1x FireWire 400 port
- optical and standard audio input/output

You can come pick it up at Delft or The Hague. I’ll ship it around europe at cost, too, if you prefer.

Ooh, shiny!0

First thing I did when I got off the plane is head down to LJS and buy a MacBook Pro. Turns out that MacBooks aren’t -really- small notebooks; you can’t comfortably type on them in cramped spaces like an airplane seat, so if that is out, then you might as well go all the way and take a 15″ notebook. It’s only half a kilo heavier anyway.

The one disadvantage - that new clickable trackpad is very noisy. Other than that, it’s nice. The keyboard keys are ‘pre-worn’ - they are less grainy than the old macbook keys. They feel about the same as the area of the spacebar that’s worn down a little, which makes me think the keyboard plastic was changed slightly to prevent that wear from showing. Or at least, that’s my theory.

Other than that, nothing much to report. The screen is great, the sound is better, the trackpad is enormous which is nice, and getting used to the full-size clicking was so fast I’m already trying to press the old macbook trackpad through the battery.

Here’s a little video me unboxing it.

Live from San Francisco: Yes We Can!0

Reporting from the heart of San Francisco where its a bit like newyear’s, with massive crowds milling about partying on the street.

On the way back from an extremely busy schedule on the Deloitte Fast 50 tour to the hotel, we heard Barack’s historic speech on the radio. Our hotel is near Union Square, basically the center of SF, and the location of the Westin, which hosted the official democrat party of SF.

The first sight when we walked into the crowds was two groups walking towards each other, screaming various Obama slogans, fiercely hugging each other - then moving along. One group consisted of older african american men, the other, white women. Call me cheesy, but the symbolism wasn’t lost on me.

Unfortunately its going to be a very early day tomorrow so I haven’t gone down to some of the other ‘party centrals’ around the city, and I’ll keep this short.

Congratulations, everybody!

non-null in static languages.16

Very technical programming post about having a ‘no value’ concept in statically typed languages. Specifically: the difficulty of representing this in a static typing system.

Quick intro: Right now most static languages either have a concept called ‘null’, which means no value, and every object reference can point to null, such as Java or C#, -or-, there’s no ‘null’, and instead you can use a so-called ‘Maybe’ type to represent an optional value. Haskell does this. From here on out I’m assuming a Java-model static language (Fan and C# are similar enough to count).

Recently there’s been some push to add the possibility of null to the typing system itself, for Java. Stephen Colebourne reports that Fan recently added null to its typing system. However, his post is severely lacking in actual technical detail. The way he writes it, Fan’s support for null is fundamentally incomplete. Unfortunately, most people I talk to about this think adding nullity is a matter of tossing in a suffix-! to indicate definitely-not-null, or for the default is not-null fans (Like Fan, the language), suffix-? to indicate that null is allowed. This isn’t sufficient.

The notion that there are only two different states (allows-null and never-null) is wrong. Think of java generics; List<Number> foo = new ArrayList<Integer>(); is *not* legal, even though Number foo = new Integer(5); *is* legal. In generics, we have a convoluted but necessary trifecta of ways to say that your type contains Numbers:


List<Number> t; //allows reading Numbers out and writing Numbers in.
List<? extends Number> t; //allows reading Numbers out, but no writing.
List<? super Number> t; //allows writing Numbers in, but reading gives you 'Object'.

In the above, the most flexible option (the first, where we can both read and write) is also the least accepting: Only a List<Number> would do; you cannot give either a List<Integer> or a List<Object> legally, whereas in the second and third option, where we restrict ourselves to reading or writing, we can accept more.

We need the same trifecta for nullity:


List<String!> t; //allows reading non-null out.
List<String?> t; //allow writing null in.
List<String> t; //neither, but more accepting.

In the above example, those three are distinct. Specifically, While you can obviously assign a String! to a String?, as in: String! f = "foo"; String? t = f; //legal, obviously, you can NOT assign a List<String!> to a List<String?>. Here’s why: If it would be legal, you can sneakily add nulls to a non-null list. In the next snippet, we’ll assume for a moment that you could assign List<String!> to a List<String?>


List<String!> t = new ArrayList<String!>();
List<String?> f = t;
f.add(null);
String! s = t.get(0); //this returns null. WHOOPS!

This is entirely analogous to why a List<Number> does not allow you to assign a List<Integer> to it; you can secretly add a Double to a List<Integer>, which is bad.

So, List<String!> cannot be assigned to a List<String?> and a List<String?> is not assignable to a List<String!>. Okay, but, what do we do if we want to write a method that should accept either form? The need to do that is perfectly legit: If we only read and null check, or we only write non-nulls, or a combo of those two, then we really don’t care about the nullity of the incoming parameter. It would be ridiculous if it was impossible to convey this. And yet I don’t see how you’d do this in Fan.

For example, let’s say we have a method that sets the values for a row in a GUI table. The table has a sparse mode, where a column entry isn’t rendered and its space is provided to the cell to its left. ‘null’ is used to indicate this. However, obviously, lots of tables will be rendered from data out of, say, a database, where this feature just isn’t needed. Worse, if the data is also used elsewhere, it would be perfectly legit for the data to be handed to the code that renders the GUI in List<String!> form. To now pass this to the method that sets the row data, the only option is an unsafe cast and a @SuppressWarnings annotation, or copy the list, just to satisfy the type system. Eeeeugh. You need a way to say that you don’t care about the nullity type of a generics parameter.

The IDEA java editor has support for a @NonNull annotation, but they cop out entirely and don’t support it in generics bounds, which, in my opinion, means its useless.

You also need this trifecta (never-null, definitely-allows-null, either way) for generics bounds; for example:


List<?? super Integer> t; //You can add null to this.
List<? super Integer> t; //Can't add null, returns Object? on read.
List<?! super Integer> t; //Can't add null, returns Object! on read.

List<?? extends Number> t; //Can't write, returns Number?
List<? extends Number> t; //same as above
List<?! extends Number> t; //Can't write, returns Number!

Etcetera, etcetera. Incidentally, <? extends Foo> and <?? extends Foo> and ‘Foo’ and ‘Foo?’ are the only two in the entire lineup that are synonyms. You can construct a table of assignment compatibilities (can you assign a List<Integer!> to a List<?? extends Number?> - yes, you can), but that process is already complicated due to generics. Adding nullity to it makes it even more complicated.

Consider this a soft vote for the Maybe principle, however, because there’s so much legacy code out there, going that route just isn’t feasible. I’m still in favour of adding type-checked nullity to java, just like I think generics was a great idea even with the complexities introduced. However, make no mistake about it: It’s a complicated issue. And Stephen’s explanatory page about how Fan does it seems like they didn’t get it right.

ADDENDUM: The fourth nullity state.

Java language changes, or for that matter, any programming language change, does not live in a vacuum. There’s old ‘legacy’ code to consider, written before the feature existed. New code should be capable of interoperating with legacy code relatively painlessly, otherwise no project can move on to any of the new features without completely overhauling every last snippet of code they use. Thus, if nullity-in-the-type-system is to be adopted, it needs to interoperate with pre-nullity code. How do we do that?

Let’s look at generics, which is the closest relative. In generics, there’s a concept called a ‘raw’ type. In source, raw types are always easy to find: Its the ones without ANY generics bound, not even the < and > symbols. Java handles raw types by letting everything go (you can assign anything to a raw type, and a raw type can be assigned to anything; List<String> = methodThatReturnsARawList(); is legal). However, anytime you do so, you get a warning that basically says: Okay, if you say so, but the type system doesn’t take any responsibility for the correctness of your code.

A nullity proposal really should work the same way. If I KNOW a method will return a List of things that never contains null, and the list itself is also never null, but it was written before the addition, then, it would be nice if I could just assign the result to a List!<String!> and get a warning which I can then suppress, instead of a flat out refusal, or, also suboptimal, an unsafe cast, which would later have to be removed when the library I’m using gets updated.

Unfortunately, with our three modifiers (definitely not null, definitely allows null, and don’t know), we’re out of luck; unlike generics, the way it used to be written is also valid in the new way (specifically, in the examples above, it meant ‘don’t know’). We need a ‘raw type’ for nullity, which is distinct from the most null-accepting type. Here’s the difference:

a method that takes a List?<?? super Number> - explicitly written just like that, will simply not accept a List<Number!> as input. (after all, the method could add nulls to this list due to the ??). If you try, you get a compiler error. The method itself is allowed to write in nulls, and when reading, gets Objects out, that could be null.

On the other hand, a method that is legacy and has as signature: List<? super Number>, has the same behaviour: Writing nulls into the list is allowed, and when reading, you get Objects back which might be null. However, it isn’t the same as List?<?? super Number> for the same reason generics ‘raw’ types aren’t quite the same as any specific generics bound: In the legacy case, you CAN give a List<Number!> to the legacy method that accepts a List<? super Number> - however, because the type system does not know what the legacy method does, it will give you a nullity warning message that simply states: Okay, if you say so, but I cannot guarantee that this legacy method you’re calling will never write null into your list of Number!s.

So, we now have a 4th nullity state: legacy. That makes 4 states:

Definitely-allows-null, Definitely-not-null, Don’t care, and Legacy. How do we separate these states?

Here’s a modest proposal:

All new files only get parsed as java7 syntax if they start with “source 1.7;”. Then, never-null is the default, ‘*’ is ‘Don’t care’, ‘?’ is ‘definitely allows null’, and its not possible to actually create a legacy type; you can just interoperate with them. Without the source keyword, all your types are legacy-null. ! is no longer used except to promote a generics parameter to non-null. An example for that last one: Let’s say list has a method that returns the value if it isn’t null, and a default if it is, where the default may itself not be null, you could write:

public T! getIfNotNull(int index, T! default) {
T x = get(index);
return x == null ? default : x;
}

There’s a bit of weirdness in the notion that a generics name (such as ‘T’) carries its null-nature with it, whereas a plain type, like, say, ‘String’, doesn’t. Therefore, you need both ? and ! to promote/demote whatever it was to the definitely-not-null or definitely-allows-null variety, with no modifier meaning: Whatever nullity state the type name was bound to.

In other words, if you go: new ArrayList<String!>, then The ‘T’ in the ArrayList class source is bound to ‘String!’, using ‘T!’ would also be ‘String!’, and using ‘T?’ would be ‘String?’. ‘T’ by itself works a bit like ‘don’t care’ - where relevant you must null check when reading, but you must not write in nulls when writing, because you don’t know if null is allowed or not.

Which macbook do I buy?0

UPDATE: The old chargers should fit into the new macbooks. You CAN replace the memory yourself. This MacWorld article has loads of details.

Just looked at Apple’s new macbooks, and… OMG! Shiny! Want!

The question is; which one? I’ve always considered the blackbook a pointless waste of money, and even the macbook pro was a disdainful extravagance; far too unwieldy and far too expensive.

However, with these models, I’m not so sure. So, which one should I get? It’s a tossup between the cheaper new 13″ and the cheaper new 15″. I doubt I’m the only one with a decision to make, so I’ll list the differences here. + is an advantage for the 13″, - is an advantage for the 15″ and ± is a mixed blessing or simply the same, but not something you might know.

 - cheap 13″ has no keyboard lighting.

 - 13.3″ vs 15″ and 1280×800 v 1440×900 pixels

 - 2.0Ghz instead of 2.4Ghz.

 - 160GB vs. 250GB harddisk (You can buy a laptop 250GB for €60,-)

 - The new 13″ has no firewire anymore. The 15″ still has one.

 - Only the 15″ has an expresscard slot.

 - The 15″ has better speakers.

 ± Both have an invisible sleep light (invisible when it’s off) - like the old iBooks.

 ± Both have a new trackpad with the MacBook Air/iPhone’s multitouch features, and both are made of a new material (polished glass - no really), which is also a button; the entire trackpad physically moves down and clicks mechanically when you press down on it. Because ther’s no dedicated button, they are larger.

 ± Both have a side-to-side access panel on the back taking up almost half the notebook which locks in place with a lever. RAM and HDD are user-serviceable, and the battery is stored in this compartment as well. The iBook had a really bad battery locking system, the macbook’s was a bit better, and the old MBP didn’t have a user-serviceable HDD bay, so much improvement across the board. (I can’t find a note anyplace that the RAM is user-serviceable, but I’d be very surprised if it wasn’t. EDIT: It looks like it really isn’t replaceable, which means you need to shell out 140 euros to upgrade to 4GB, and you need to decide when you buy it. Eugh!)

 ± 15″ now have the same battery life as the 13″ (5 hours for both), probably because the 15″ has a redundant crappy GPU which is used when you aren’t doing anything intensive and running off of battery power.

 ± The 15″ has a better GPU, but, compared to a standard macbook, you won’t notice the difference; its incomparable to what plastic macbooks have.

 ± All new macbook screens are glossy, unfortunately.

 ± You need to buy 2×2GB SO-DIMM (about €50,-) and install it yourself, either way.

 ± Assuming you can claim VAT/BTW back, no real price difference between Europe and the US.

 ± Both are equally thin; slightly tinner than plastic macbooks.

 ± Both use a new display plug so you need to rebuy your VGA/DVI adapters, though this new one is a standard and royalty/patent free. I’m not sure if the charger is the same. The actual charger that ships with it seems different, but I can’t tell from the images if the magsafe plug on the notebooks themselves are different.

 + ex VAT/BTW, you save €505,-

 + The 13.3″ is 450 grams lighter.

 + The 13.3″ is 32.5×22.7 cm - the same size as the old (but thinner). The 15″ is 36.4×24.9 cm; 23% more surface area (and bigger than the old MBP 15″ by 4%)!

 + The 13.3″ powerpack needs 60W, the 15″ needs 85W. Apparently most outlets in trains and planes don’t give more than 80W, so you can either use the machine or charge the battery, but not both, for the 15″. The powerbook is probably larger (I can’t find a definitive answer, but the old MBP charger was larger than the MB’s).

 

I haven’t found any pictures of the bottom; I really disliked the battery locking mechanism on the old iBook, and a few pictures I’ve seen sort of suggest that you slide the battery into the side, instead of into the bottom. I assume the memory and harddisk are still user servicable, which means there needs to be a way to remove the bottom part of the casing.

Netbooks and iPhones/gPhones are making the portability factor somewhat less important; for short trips you no longer need your macbook, and the set of advantages for the 15″ are rather sizable. I’m edging towards shelling out the extra 500 euros for it. How about you?

Imhotep theme designed by Chris Lin. Proudly powered by Wordpress.
XHTML | CSS | RSS | Comments RSS