Mats Henricson

Mats Henricson

Saker som blippar pÄ min radar

Woohoo: Mixed Scala and Java projects in Eclipse

A few days ago Scala 2.7.2 RC2 was released. One of the new features is mixed Java and Scala support in both the compiler and the Eclipse plugin. I decided to try it out. Installation was very simple. I then set off creating a simplistic Java class side by side with the Scala object, in the same package. I then created such a Java object in my Scala code, and ran it. It just works!

Kilim – Actors for Java

Just bumped into Kilim, an actors framework for Java. This could be really important! The most exciting thing I’ve seen in several months!

It is time to start encrypting emails

What can I say? I am dismayed and utterly embarrassed by the new Swedish law that will unleash previously unheard of snooping of internet traffic crossing our borders. The only decent way to now communicate by email with people within or outside Sweden is to use encryption. The law allows the Swedish agencies to share whatever information they get with other countries, so from now on you have to count on whatever you send me unencrypted might end up within MOSSAD, CIA or GRU. Well, probably not the GRU, since the whole idea with much of the law is to snoop on the Russians (they’ve admitted that publicly).

I haven’t set up encryption just yet, but will very soon, using the Thunderbird Enigmail plugin and very long keys. I’ll let you know as soon as I’ve got the machinery working. I will probably use a new email address, since an old experiment 5 years ago have left old public keys left scrambling around keyservers out there. I’m not sure I can revoke them properly.

Again, I am sincerely sorry for this situation. The current government will probably be sacked at the next election because of this, but I don’t trust any new government to revoke the law. They’re not competent enough know that the law is utterly useless.

My Scala-presentation is now online

Yesterday I held this Scala presentation at Javaforum in Gothenburg. About 140 persons attended the evening seminar. All in all I think my presentation went pretty well, but Niclas Nilsson pointed out afterwards that I got the definition of Duck Typing wrong. I have corrected this in my S5 slides, which are in Swedish. I’m releasing my slides in the no-nonsense WTFPL license.

Then a group of us went to The Bishop’s Arms at Kungsportsavenyn and drank a couple of beers. It was me, my relative Niclas Palmquist, Niclas Nilsson, Viktor Klang and John Nilsson. After about an hour Luke Hohmann  approached us and wondered if we were the Scala  geeks. I have no idea how he figured that out.  🙂 It was in all a really enjoyable evening. If you ever bump into Luke, ask him  to tell you his "credit card numbers as disk address" tale. It is absolutely hilarious!

Steve Yegge continues his push for dynamic languages

Steve Yegge, who works for Google (hehe), continues to push for dynamic languages, most notable JavaScript, in his latest blog, which is a transcript of an hour long speech. My god is he rambling, on and on, it requires a lot of speed reading to spot the interesting parts. He does, for example, point out that the rename-method refactoring in Java, isn’t all fool-proof either (compared to in dynamically typed languages, where many more bets are off) because, quote:

They miss every single instance of a method name that shows up in an XML configuration file, in a reflection layer, in a database persistence layer where you’re matching column names to fields in your classes. Every time you’ve deployed some code to some people out in the field…

Well, the thing is, IntelliJ finds most of these cases too. In all, I found the argument pretty lame.

In general it is hard to tackle a well-known guy like him on the net. Is he credible? Does he know what he is talking about? One commenter to his blog had a strong opinion:

Steve,
Some of these people ((who are really fanatical about strong typing)) are more likely to be offended by your compulsion to pass severely under-qualified comment on the topic; something you have done more than once before. The offense comes about because it is almost deliberately misleading to others who might have the desire to learn and are not in a position to know any better and may mistake your pseudo-scientific nonsense with warranted factual claims.

I say "almost deliberate" because I am more inclined to believe your desire to continue doing this is a result of your ignorance rather than malice.

Ouch!

Twitter, what would I use it for?

This last weekend I succumbed to internal pressure and signed up for a twitter account. I’ve looked at the whole Twitter bonanza for a while without really grokking what it could be used for. Meme spotting, perhaps. Getting to know what your closest friends are doing in real-time, perhaps. But what could you possibly say in 140 characters that could be of any significant interest outside the circle of your nearest and dearest? But I have this nagging feeling that someone someday will figure out something insanely great with Twitter. Better be prepared.

So, I tried it out, signed up my cell phone, twittered from it, then sent a twitter message to myself noting that twittering from my cell phone worked (what a stunning engineering feat). Then what? I tried to find anyone out there, finally located Rick Ross, the founder of the Java Lobby, and setup to follow him. I then read through the names of the people following Rick’s twitter, noticed a few people I knew (of), and followed them too, of course. The only way you know you exist is by the number of people you follow on twitter, right? In one of these lists of people I bumped into Guy Kawasaki. Of course I signed up to follow him too. After all, I’ve seen him live at a Garage event in Silicon Valley. I then went to bed.

Before falling asleep my mind fumbled with what to do if Guy signed up to follow me. After too many hours of sleep (just how often does that happen) I woke up, had breakfast and checked my mail. The first one told me that Guy Kawasaki was now following me on Twitter.

Here is ample time for a timeout. Guy Kawasaki is probably wealthy enough to do whatever he wants any time of the day, and he may be a worse tech junkie than me, but how could he possibly get anything done if he goes following just any schmo out there following him? And, what the heck could I possibly write in 140 characters that could be of any interest to him?

I wouldn’t mind him subscribing to my blog. After all, I write there fairly seldom, and when I do, I normally believe I have something to say. I’m not paralyzed, just stumped. I will probably wait a while before I send my next twitter. Not really because he might listen, but because I don’t really know what to say.

history meme

mats@matslw25:/home/matsh$ history | awk ‘{a[$2]++}END{for(i in a){print a[i] " " i}}’ | sort -rn
102 cd
56 ls
50 exit
49 more
42 ll
33 mysql
22 ssh
17 ps
14 svn
12 sudo
12 ant
11 rm
9 kill
8 gedit
6 which
6 man
4 touch
4 mv
4 less
4 grep
4 ftp
3 curl
2 wget
2 set
2 info
2 history
1 xemacs
1 setenv
1 ./restartupl.sh
1 recode
1 mkdir
1 ifconfig
1 iconv
1 getenv
1 /etc/init.d/mysql
1 env
1 emacs
1 echo
1 chmod
1 cat

Fyra teknologier för portabilitet i sociala nÀtverk

Sean Ammirati har under rubriken 4 Technologies for Portability in Social Networks: A Primer bloggat om fyra relativt nya teknologier som gör det möjligt att få portabilitet i framtidens sociala nätverk. Han nämner OpenID, som jag läst om tidigare, men även hCard, XFN & FOAF samt OAuth som jag aldrig hört talas om tidigare, eller bara känner till namnet. Mycket intressant, och värt att läsa om man ska skapa en publik webbsite.

Scala 2.7.0 slÀppt

Det JVM-baserade språket Scala har precis släppts i version 2.7.0. Den stora nyheten är fullt stöd för Java 1.5 generics. Vill ni läsa mer om Scala kan ni läsa boken skriver av Bill Venners, Martin Odersky (skaparen av Scala) och Lex Spoon.

Groovy (and Ruby) only solves half the problem

It is with some dismay I’ve been reading the latest Groovy discussions on JavaLobby. I’ve spent quite some time learning Scala, so it bothered me a bit that I minded another competing language a spot in the limelight. Why would I care? To me as a consultant, language fragmentation is great. Today only a few languages are in widespread use, and there is no problem finding a skilled consultant at a reasonable price. But if Java and C# fragments into JRuby, Groovy, Scala, Jython, F#, IronPython, etc, then I’m better off since I will probably be able to charge more per hour in such a fragmented market.

As an anlogy, what if we all were driving either Fords or Mazdas – competition in the car mechanics market would be fierce since there would be so many that could fix our cars. Today we have dozens of car makers, and I can’t drive my Toyota to a Volvo mechanic and expect him to be able to fix it. Instead I have to drive to one of the few specialized Toyota mechanics that charge so much my nose starts bleeding when I open my wallet to pay.

What we all want is a more productive language, but we don’t want to throw away all our old frameworks and libraries. Which is where JRuby, Groovy and Scala comes in. Some people believe Groovy is the winner, because its syntax is so close to Java. But I think the only major difference, really, is where you declare the type:

// Java and Groovy
String a = "Xyz";

// Scala, knows it's a String by type inference
val b = "Xyz"

// Scala, if you wish to be explicit about the type
val c: String = "Xyz"

And, seriously, how hard can it be to learn the difference?

All these new languages have amazing features that Java doesn’t have, but dynamic typing isn’t one of them. Sorry, nobody can convince me that throwing away static typing is a good thing. Some argue that dynamic typing is preferrable during prototyping, when the code base is in big flux. At a later time, when the design has stabilized a bit, people claim you can re-implement it in a language with static typing. Sorry, that just don’t make any sense to me. During prototyping, when you’re fumbling around in the code to see where the abstractions are, is when I need static typing the most. Otherwise Liskov’s Substitution Principle will be the axe that chops off my fingers in the early morning when bright light shines on my nightly prototyping. (Sorry, I got a bit carried away there). Being sloppy about types is not an option.

Regardless, these new language features are way cool, and will hopefully be able to bring programming productivity up quite a bit. But don’t fool yourself – this productivity isn’t all that important, at least not for big projects. At Microsoft they write 1500 lines of code per year. Do you really think it matters much if it is in VB or F#? What really matters is readability. The reason they only write 1.5 KLOCs a year is most likely that their existing code is in such a mess that you need to be superhuman to understand it (and have 3 testers ready behind you at every moment).

And Java is pretty readable, IMHO. It is a rather simple language with few hidden surprises. At the moment my Scala reading skills is perhaps 10% of me reading Java. I hope to bring that up quite a bit, because Scala code isn’t 10 times more compact than Java.

The other half of the problem, if language features and compact readable code is the first half, is multi-core processors.

Most of us aren’t smart enough to manually split our applications into more than a few parallelly executing threads. We’re certainly not smart enough to spawn threads to keep 16 cores churning. In face of this problem, are we going to pick a new language with a rather immature VM (Ruby) or a language with a really complicated virtual dispatch scheme that complicates attempts of the VM to split jobs to several cores (Groovy)? It just doesn’t make sense to me!

Why not pick a language with immutable data structures and a really elegant actors library that gives us message passing concurrency? Why pick a language that makes it hard for the VM to parallellize, when we can pick a language where parallellization is a built-in feature from the start?

I think the choice is simple. Only one language solves the whole problem: Scala.

Automatic Resource Management Blocks i Scala

Joshua Bloch, som numera jobbar på Google, har gjort ett förslag på hur man i Java ska slippa behöva anropa close() på resurser i finally-satser. Ni vet:

BuffereInputStream bis = null;

try {

   BuffereInputStream bis = …;

   // Use bis

} finally {

   if (bis != null)

      bis.close();
}

Chris W. Hansen beslutade sig för att se om det gick att göra i Scala, utan att behöva ändra något på själva språket (vilket är vad Joshua föreslår). Resultatet är lysande, och enkelt!

Steve Yegge om hur sprÄkvalet pÄverkar kodbasens storlek

Steve Yegge, som jag bara stött på vid några tillfällen tidigare, skrev strax före jul ett blogginlägg under rubriken Code’s Worst Enemy. Där försöker han, utifrån erfarenheten från ett spel han skrivit på egen hand i Java, argumentera för att det är Javas fel att hans kodbas nu är på 500 000 rader. Vilket han nu inte längre klarar av att underhålla.

Nu kan man ju undra hur en person över huvud taget kan skriva en halv miljon rader Java. Och premissen att det är Javas fel att det är så många rader kan ju också diskuteras. Men jag är nog böjd att acceptera att Java kanske inte är det tightaste språket på planeten. Men Steves beslut att skriva om allt i Rhino känns ju rätt bisarr.

Över huvud taget ska man, enligt min ödmjuka mening (IMHO) tänka sig för innan man börjar skriva ett stort system i ett dynamiskt språk. Dels får man betala detta med "continuous tax", samt att man inte kan få något riktigt solitt refactoring stöd. (Båda länkar går till blog-inlägg av husguden Cederic Beust).

Så min rekommendation, om man är rädd för att begrava sig själv i sin kodbas, är att välja Groovy, där man i alla fall kan slå på statisk typning om man vill, eller Scala som är statiskt typat. Och båda kommer med bra webbramverk i form av Grails och lift. Utan ett sådant är ett språk rätt kört.

Hur som helst så har Steves inlägg genererat en otrolig mängd med inlägg av många rätt kända personer. Har ni några timmar till övers så är det värt en titt.

Terracotta clustering of Scala Actors

I Scala finns ramverket Actors, som ska vara en nära mappning av Erlangs framgångsrika motsvarighet med samma namn: ett meddelande-baserat ramverk för concurrency. Nu har Jonas Bonér kopplat ihop Scalas Actors med Terracotta, vilket ger oss transparent klustring av dessa Actors!

David Pollak, skaparen av webramverket lift för Scala lät hälsa:

This is most awesome news. I’ll do some work seeing if we can scale Skittr to 50M users on an EC2 cluster.

Jag har ganska svårt att föreställa mig en häftigare applikation: Scala, lift, Actors, Terracotta och EC2. Ring mig om ni har ett Scala-uppdrag i fickan!

Ouch, Howard Lewis Ship dumpar Maven

Skaparen av Tapestry, Howard Lewis Ship, dumpar nu Maven, efter att ha använt det väldigt mycket. Citat från hans blog:

The Maven team is criminal…

The Maven project site is an embarrassment. The tool supposedly designed for "project comprehension" is itself incomprehensible, due to its scale, the chaos of its documentation, and the extreme lack of engineering discipline evidenced by its maintainers.

Get out while you still can.

Inom Crisp har vi två fraktioner, en som gillar Maven och använder det mycket, och en annan grupp som är skeptisk. Jag hör till den senare gruppen, efter att ha sett ett projekt nästan snubbla på Maven. Dessutom är jag är en stor fan av Hani Suleiman, och han avskyr Maven.

Den senaste tiden har jag sett många projekt gå över till Maven, bland annat är det mycket använt i Scala, och just nu sitter jag på Jfokus och lyssnar på ett föredrag om Apache ServiceMix, och de använder också Maven. Men Ships inlägg gör att jag inte kommer att rekommendera Maven om inte projektet där det ska användas är rätt enkelt i sin struktur.

Intressant intervju med Scalas Martin Odersky

Skaparen av det nya coola språket Scala, Martin Odersky, blev intervjuad på JavaPolis som gick av stapeln i Beligien för nån vecka sedan. En halvtimmes snack som man kan lyssna på när man plockar med disken. Det gjorde jag. Det verkar, som jag misstänkte, att Actors är precis det ramverk som kan ge oss det stöd vi behöver för transparent distribuering av våra program på multi-core processorer. Yay!

Varför Scala kan vara nÀsta stora programmeringssprÄk

Jag har funderat ganska länge på vad nästa stora språk skulle kunna vara. Jag var tidigt med på resan från C++ till Java. Åkte på den första JavaOne konferensen i San Francisco, och trodde redan då att Java skulle ta över. Så fort det var möjligt lämnade jag C++ bakom mig, trots att jag skrivit en bok om C++ och suttit i standardiseringskommissionen för C++.

Men Java varar inte för evigt, och jag har på egen hand samlat på vad jag tror är viktigt för att något ska bli "nästa stora språk":

  1. Dess syntax får inte vara för olika det som gäller idag, dvs Java, för annars kan man inte få speciellt många att migrera.
  2. Det måste bygga på en virtuell maskin, troligen endera JVM eller Microsofts CLR. De ger den portabilitet vi kräver idag. (CLR är ju kanske inte så portabel, men i teorin finns ju Mono.)
  3. Det måste ha inbyggt stöd för multi-core. Då menar jag inte bara det språkstöd som finns i Java och andra språk för att skapa och starta trådar, utan inbyggt stöd så att virtuella maskinen kan bryta loss delar av det som ska exekveras till olika cores i framtidens processorer. Om 5 år har vi ju kanske 16 cores som standard i en processor, och att manuellt skriva kod som utnyttjar dem är för svårt för annat än experter.
  4. Det måste ha stöd av ett stort företag som kan ställa upp med resurser att skriva verktyg, bibliotek, marknadsföring, konferenser, böcker, etc.
  5. Det måste ha bra prestanda. Visst, Javas prestanda var inte bra från början, men det fanns inget skäl till att det skulle behöva vara långsamt, och idag har Java väldigt bra prestanda, förutom startup tid.
  6. Det bör helst inte överge tidigare investeringar i redan existerande kod.
  7. Det bör vara statiskt typat, för annars blir det svårt att bygga bra verktyg för bland annat refaktorering, vilket är nödvändigt för större projekt.
  8. Det måste vara objektorienterat – det är otvetydigt så att det är det paradigm som fungerat bäst för att bygga stora system.

Java har idag allt detta, förutom 3, och det oroar mig en del. Så fick jag höra talas om Scala och dess ramverk som heter Actors. Det hävdades att det skulle hjälpa till med just detta med multi-core. Har ännu inte läst in mig på just Actors, men jag blev nyfiken på Scala och läste in mig på det.

Scala är ett statiskt typat objekt-orienterat språk med en syntax som är tillräckligt lik Java för att man ska luras att ta en närmare titt. När man väl sett på vilket sätt det också är ett funktionellt språk, med dess annorlunda syntax (som jag tror måste till av ren nödvändighet för att ge ett sådant stöd), så har man redan svalt kroken, sänket och hela korken.

Scala ligger ovanpå Javas virtuella maskin, och Java-klasser kan användas rakt av. Java-kod är inte automatiskt giltig Scala-kod, på det sätt som all C för 15 år sedan var giltig C++, men man kan ta med sig existerande Java-kod in i den Scala kod man skriver.

Tyvärr har inget större företag ställt sig bakom Scala ännu, men det finns riktigt många projekt som jobbar på verktyg och ramverk. Det finns en rätt bra Eclipse-plugin, ramverk för enhetstestning, ett mycket intressant webbramverk som heter lift, en mycket aktiv och hjälpsam mailinglista, och ett par böcker på gång. En av böckerna kan man precis förbeställa!

Scalas prestanda är mycket bra, kan till och med med vara snabbare än Java.

Här står jag själv just nu. Jag ska läsa den nya Scala-boken över julhelgen. Just nu är jag mest en entusiastisk amatör som tror jag hittat något som kan bli riktigt stort.

Webbprogrammering med Scala och lift

Språket Scala har sedan något halvår tillbaka haft ett webbramverk kallat lift.

  • Comet support is easy to add and scalable
  • Mapping between databases and code is easy (Rails)
  • Content and code are well separated (Wicket, TurboGears)
  • Forms are secure by default (Seaside)
  • Convention over configuration is emphasized, no xml hell (Rails)
  • Component model makes pages elements easier to create and maintain (Wicket)
  • Prebuilt classes are provided for standard functions, e.g. User (Django)
  • Semantic information carries from model to enable smart display. e.g. postal code, social security number, email address
  • State machine support for model objects, including timeouts. e.g. after 3 days w/o confirmation, delete this new account
  • Site Map provides site wide navigation and access control support

Bättre start är ju svår att få. Jag bara önskar att jag hade något roligt projekt att testa det på.

Första DWR boken kommer i januari eller februari

Fick precis veta att den första hela boken om DWR kommer i januari eller februari, skriven av Frank Zammetti, som tidigare skrivit flera böcker om JavaScript, Ajax och Java, dvs precis den bakgrund som behövs. Detta borde ge ett lyft för DWR.

Ny blog om Comet

Ett antal mycket kända personer i Ajax-svängen har startat Comet Daily, där folk bloggar om Comet. Obligatorisk läsning om man är seriös när det gäller Ajax och framtidens webb.

Dojo 1.0 Àr slÀppt

Kanske det mest innovativa Ajax-ramverket av dem alla kom just i version 1.0. Fast, kan man påstå något om alla Ajax-ramverk när man bara känner till hur 7 av troligen över 150 fungerar? Hur som helst så lär det bli en ordentlig boost för användningen av Dojo.

Brendan Eich ber Microsofts Chris Wilson hÄlla klaffen

Brendan Eich har kanske den intressantaste bloggen om internetpolitik på hög nivå (hur kommer vi att göra webbapplikationer i framtiden, typ). Han skapade JavaScrip, och när han skriver något är det nästan alltid högintressant.

ECMAScript 4 (nästa stora uppgradering av JavaScript) får många nya features för att skriva stora applikationer, och det verkar göra Microsoft skraj. Man vill helst inte ha några konkurrenter till sina egna teknologier, såsom Silverlight. Nu försöker de, genom chefsarkitekten för Internet Explorer, Chris Wilson, backa ur ECMAScript 4 genom att påstå att språket går ifrån sina rötter som ett litet och enkelt språk, och att Brendan ignorerat Microsofts invändningar.

Brendans svar är skoningslöst! I ett blogginlägg knökfullt med referenser till öppna mailinglistor, öppna wikis och andra forum slår han fast att han gjort allt som varit mänskligt möjligt för att bemöta Microsofts synpunkter. Citat:

Assuming you didn’t know better, and someone was misinforming you, you (along with everyone reading this letter) know better now. So I’ll expect to see no more of these lies spread by you.

Ouch!

JAX-RS: RESTful Web Services

Draft specen för JAX-RS: The Java API for RESTful Web Services släpptes för någon vecka sedan. Som oftast brukar jag inte orka granska specarna som kommer, men denna gång tog jag mig en titt. It made me go mmmm… som det heter. Kan denna lilla kodsnutt väcka aptiten:

@UriTemplate(“widgets”)‏
public class WidgetList
{
@HttpMethod
@UriTemplate(“offers”)‏
WidgetList getDiscounted() { /* ... */ }

@UriTemplate(“{id}”)‏
Widget findWidget(@UriParam(“id”) String id)‏
{
return lookupWidget(id);
}
}

Här är en annan goding:

@UriTemplate(“widgets”)‏
@ProduceMime(“application/widgets+xml”)‏
public class WidgetList
{
@HttpMethod
String getAll() { /* ... */ }

@HttpMethod
@UriTemplate(“{id}/description”)‏
@ProduceMime(“text/html”)‏
String getDescription(@UriParam(“id”) String id) { /* ... */ }
}

Men, gräver man djupare i specen (den är hittills bara ~30 sidor) så blir det mer hmm… än mmm… massor av rätt märkliga begrepp som jag aldrig stött på tidigare. Speciellt begreppet Contract i detta sammanhang förvirrar mig ganska mycket. Hur som helst, väl värt en titt. Kanske en RD på ämnet?

Ajaxians Ajax Survey

Ajaxians, de mest aktiva bloggarna om Ajax på nätet, har nyligen publicerat resultatet från deras undersökning om vilka Ajax-ramverk som anänds idag. Bland kommentarerna finns en intressant extra fråga som inte ställdes, nämligen "Vilket Ajax-ramverk skulle du använda om du fick starta om från scratch?".

Några resultat som bör nämnas:

  • Scriptaculous och Prototype används av drygt hälften av alla, 59% respektive 68%, vilket inte är förvånande då de är solida ramverk som har funnits länge.
  • DWR hade förvånansvärt få användare, bara 13%
  • Google Gears används av 22% av alla 826 som besvarat enkäten, vilket är imponerande med tanke på hur nyligen Gears släpptes.
  • Ext JS har flugit helt under min radar och används av 34% av alla som svarade. Hur har jag kunnat missa den?

X10? No, I don’t think so

En artikel på Sys-Con, Multi-Core and Massively Parallel Processors, fångade precis mitt intresse. På slutet av artikeln, som annars visade sig vara rätt ointressant, presenteras språket X10, ett språk som bygger på Java men där man lagt till ett antal konstruktioner för att stödja multi-core processorer. Min första tanke var "suck, ännu ett språk jag borde kolla upp", men en titt på deras mailinglista för användare ger vid handen att den under 2007 haft sammanlagt 65 email, dvs 2 i veckan eller så. Inget signifikant kan växa ur ett så magert intresse!

Jämför det med mailinglistan för Scala som har ca 7 mail om dagen, dvs ca 25 gånger mer.

LINQ för Java

För .Net språken har det funnits något som kallas LINQ, Language Integrated Query. Jag har aldrig brytt mig om att kolla upp vad det är, men så såg jag att en norrman (?) med namnet Anders Norås har släppt Quaere, vilket är en Java implementation med samma funktionalitet. Ett coolt exempel:

The following query uses a compound from clause to select all pairs of numbers from two arrays such that the number from numbersA is less than the number from numbersB:

Integer[] numbersA = {0, 2, 4, 5, 6, 8, 9};
Integer[] numbersB = {1, 3, 5, 7, 8};
Iterable<Variant> pairs =
from("a").in(numbersA).
from("b").in(numbersB).
where(lt("a", "b")).
select(
create(
property("a"),
property("b")
)
);

Scala 2.6.0 slÀppt

Massor av buggfixar, och några smärre språkändringar. Go Scala Go!

NÄgon rÀdd för Singulariteten?

Jag stötte på begreppet Singularitet för något år sedan. Vad menas med Singularitet? Jo:

Let an ultra-intelligent machine be defined as a machine that can far surpass all the intellectual activities of any man however clever. Since the design of machines is one of these intellectual activities, an ultra-intelligent machine could design even better machines; there would then unquestionably be an ‘intelligence explosion,’ and the intelligence of man would be left far behind.

Smaka på innebörden av detta! Någon gång i framtiden blir datorer så smarta att de kan ta över designen av sig själva, så att deras intelligens accelererar ifrån oss människor. Vad sker då? Tydligen finns det en konferens för just detta, kallad The Singularity Summit. Den författare jag läst som ger mest insikt över detta område är Charles Stross. Jag kan varmt rekommendera hans bok Accelerando, som handlar om precis detta. Boken är emellanåt svårläst, men så full av ideer att man bör spänna fast säkerhetsbältet innan man börjar läsa. Det var exempelvis i den boken jag först stötte på begreppet Matrioshka Brain.

A matrioshka brain is a hypothetical megastructure, based on the Dyson sphere, of immense computational capacity. It is an example of a Class B stellar engine, employing the entire energy output of a star to drive computer systems.

The idea of the matrioshka brain violates none of the currently known laws of physics, although the engineering details of building such a structure would be staggering, as such a project would require the "disassembly" of significant portions (if not all) of the planetary system of the star for construction materials.

Om inte det begreppet ger en hisnande känsla så är man helt oemottaglig för hard core science fiction!

Stross är annars en vansinnigt cool snubbe. Han är utbildad apotekare, har forskat i computer science, har skrivit artiklar om Perl och Linux, har en väldigt intressant blog. Och skickar man honom email så svarar han!

W3C ’01-’05: WTF?

Alex Russell, som driver Ajax-projektet Dojo, har bloggat under rubriken Standards Heresy, där han bland annat undrar vad W3C sysslade med mellan 2001 och 2005. I stort sett ingen ny standard kom från dem under de åren. Annars handlar den PDF han länkar till om varthän standardiseringen av webben är på väg, och hur det bör ske. Komplext, men intressant.

GWT 1.4 slÀppt

GWT, Google Web Toolkit, är ett mycket intressant Ajax-ramverk som precis släppts i version 1.4. GWT skiljer sig från många andra Ajax-ramverk i det att man programmerar i Java, och sedan genererar JavaScript som exekverar i browsern. Fungerar väldigt bra, enligt flera av mina kollegor på Crisp. Har tyvärr inte fått tid att testa själv.

ISO röstade nej till OOXML

Det har precis ramlat ut en pressrelease från Microsoft där man försöker dölja det faktum att OOXML inte fick 2/3 majoritet av de P-medlemmar som behövs för godkännande. 74% av alla länder röstade Ja, men väldigt många av dem är länder som uppenbarligen köpts av Microsoft – länder som i stort sett aldrig bryr sig om standardisering, men som plötsligt fått ett brinnande intresse av att använda standarder som bara stödjs av dyra Microsoft Office. Ta en titt själv i listan så får ni se.