Thursday, September 29, 2005

Right there, baby



Saxat ur en intervju från seattlepi.com, Gates and Ballmer: A look at the future

Q: Bill, you had a video last week (at a Microsoft conference), a "Napoleon Dynamite" spoof, where you got to dance a little bit. Did Steve coach you on that, on the dancing?

Gates: Oh, no. No, no, no.

Ballmer: His own performance, right there, baby.


Du kanske undrar varför Ballmer har någon sorts Travolta-liknande danskungsstämpel? Har du missat den idag så legendariska dancing monkey, monkey boy eller ballmer dance (kärt barn har många namn) så ladda ner en mpeg genast. När du ändå är igång, passa på att ladda ner developers, developers också.

Wednesday, September 28, 2005

Scamming the scammer!



Vansinnigt elakt men rolig läsning: The PowerBook Prank. Jeff skulle sälja kompisens PB via Ebay, märkte att han höll på att bli blåst och beslutade sig för att blåsa bedragaren i sin tur.


Scamming the scammer!

Wednesday, September 7, 2005

Enlarge your memory, guaranteed satisfaction

If you move from 32 to 64 bit, you basically need to at least double your memory. 2 gigs in 64 bit is the equivalent of a gig of RAM on a 32bit machine. That's because you're dealing with chunks that are twice the size.

Fel, fel, fel. Nigel Page på Microsoft Australia har försökt förklara systemkraven hos nästkommande version av deras operativsystem (Windows Vista) och särskilt hur mycket extra RAM en x86-64-burk drar jämför med en vanlig x86-32.

Sanningen är att programkoden tar mer plats (bredare instruktioner) och alla pekare drar 8 bytes istället för 4 (64-bitars addressrymd). Datan däremot, som typiskt ockuperar den absolut största delen av detta nämnda gigabytestora RAM, drar inte per automatik mer utrymme.

C-perspektivet (för x86-64, andra 64-bitars plattformar beter sig annorlunda): En int är fortfarande 4 bytes bred. En float, double eller long double är lika stora som i 32-bitars fallet. En long är fördubblad, 8 bytes istället för 4. Så visst, om någon programmerare strött long's över hela sin kod, använder dom som 32-bitars data och kompilerar om rubbet för x86-64 så drar programmet mycket riktigt onödigt mycket RAM. En bugg.

Dubbel faktiskt datamängd fås bara om programmet anpassas till att använda dubbla ordstorleken på 64-bitars diton med vetskap om att ALU:n fixar beräkningen på samma tid. Man vill åt dubblerad heltalsprecision. Sådana program kommer vara ytterst sällsynta, istället ser man till att programmet kompileras med long long mot x86-32 och long mot x86-64, vilket ger samma uppförande på båda plattformar med bonusen i 64-bitarsfallet att beräkningarna sker fortare. Nej, ska man verkligen dra nytta av sina extra bitar använder man den bredare ALU:n till att bearbeta samma data på halverad tid. Till samma RAM-kostnad. Kika på GNU MP för ett exempel (en bignum-implementation).

Notera att Java, Mono och .NET inte gör skillnad på de inbyggda datatypernas storlekar mellan 32- och 64-bitars plattformar. En long är alltid 8 bytes stor. Körs programmet på en 64-bitars maskin kan VM:en utföra en long + long addition i en instruktion. Till samma RAM-kostnad.

Så lugn i stormen, om du verkligen behöver dubblera RAM-minnet för att rulla Vista på din x86-64-maskin kanske du borde fundera på hur välskrivna de program (och det OS) du kör är. Fundera är väl det ända som återstår att göra, när inte källkoden finns tillgänglig för dig eller någon annan nyfiken själ att glutta på.