/dev/null

Elite is stupid. Back to the roots.

June 20, 2010

New phone, again

Tags: , , — 15:28

As posted on Facebook and Twitter, my good old Nokia E51 was stolen last night. I still got that Palm Pre Plus, but the battery life is too short for daily usage and the form factor is also not very comfortable for normal phone calls. It’s a smart phone, not a convenient one. So again, I have to deal with the Nr 1 topic of the western society: Which mobile phone do I want? Damn it.

The good news is: T-Mobile will provide me with a new SIM card next week, so that I can keep the number. Until I get it, you have to talk with my voice mailbox (all messages will be deleted). If you have anything important to say, please write an email! :)

Who will bother stealing a Nokia E51 with Arabian keypad in Germany? It is risky to sell a unique phone like this on eBay and on the street, they will not make a fortune. Whatever.

June 19, 2010

Howto: WWAN on a Lenovo ThinkPad X100e with Ubuntu 10.04

Tags: , , , — 15:08

I could not find a single correct and useful description how to get the Gobi™ 2000 PCI Express Mini Card, that is built into some Lenovo ThinkPad X100e models, to work with Ubuntu Linux 10.04 LTS “Lucid Lynx” on Google (which is identical to the Internet). Therefore I want to share my knowledge with you, before I forget everything. This howto might also work for other notebooks that use the same WWAN/UMTS/3G card (like the ThinkPad T410).

  1. First you should turn off and open your notebook at the bottom by removing the 7 screws. Inside, you will see the sim card socket and instructions how to use it (it’s not too obvious). If you got another ThinkPad model like the T410, the sim card needs to be installed differently, for example behind the battery pack.
  2. If you did not install Ubuntu yet and Windows 7 is still there, then get the files amss.mbn, apps.mbn and UQCN.mbn from the directory C:\Program Files (x86)\QUALCOMM\Images\Lenovo – the first two files are in the “UMTS” sub-directory, the other one is in “0″. As I didn’t have my Windows 7 partition on the X100e anymore, I simply copied the files from a ThinkPad T410. If you don’t have a copy of these files, you will find some advice at http://www.thinkwiki.org/wiki/Talk:Qualcomm_Gobi_2000.
  3. If you did not install Ubuntu yet, do it now! The X100e has no DVD drive, so you need to download the ISO image from ubuntu.com and then create a bootable USB stick. The free tool http://unetbootin.sourceforge.net/ can be used for that. Use the 64bit version of Ubuntu, as the X100e supports up to 8GB of memory and you don’t want to re-install everything after an upgrade. I know the Ubuntu Web site says that it is not recommended for daily desktop usage – this is nonsense.
  4. Don’t use the proprietary ATI graphics driver. Uninstall or disable it. It will break with the new kernel.
  5. Download the latest version of the gobi loader from http://www.codon.org.uk/~mjg59/gobi_loader/download/
  6. Untar the files using tar -xzf gobi_loader-0.6.tar.gz, change into the directory and then install the tool via the usual make and sudo make install procedure.
  7. Now copy the files amss.mbn, apps.mbn and UQCN.mbn to /lib/firmware/gobi/sudo cp amss.mbn apps.mbn UQCN.mbn /lib/firmware/gobi
  8. Get the latest mainline kernel from http://kernel.ubuntu.com/~kernel-ppa/mainline/ – I am using v2.6.35-rc1-lucid, but as kernel development does not stop, you should check if there is a later version available. The important thing is that the directory ends with -lucid for Ubuntu 10.04. If you use an older version, you can try v2.6.34-rc2, but I am not sure, if that will work as well. You need to download the kernel headers and image for your architecture (i386/32bit or amd64/64bit) only.
  9. Follow the instructions on https://wiki.ubuntu.com/KernelTeam/MainlineBuilds – if there are other .deb files in the current directory (where you downloaded the kernel files in the previous step), then you can not use sudo dpkg -i *.deb, but need to explicitly list the deb files: sudo dpkg -i linux-headers-2.6.27-02062715-generic_2.6.27-02062715_amd64.deb linux-headers-2.6.27-02062715_2.6.27-02062715_all.deb linux-image-2.6.27-02062715-generic_2.6.27-02062715_amd64.deb (if you got the 64bit version of Ubuntu installed).
  10. After restart, you will notice that your wireless connection does not work anymore. Therefore, you should wait and download the file rtl8192se_linux_2.6.0015.0127.2010.tar.gz first, for example from http://www.realtek.com.tw/downloads – some people say downloads from this site were corrupted, so wish you good luck! Some people also say these drivers don’t work with a 64bit kernel. I did not experience any problems in that direction. But if you want to try, there seems to be another (older) driver for 64bit systems available for download at http://launchpadlibrarian.net/34090404/rtl8192se_linux_2.6.0010.1012.2009_64bit.tar.gz
  11. Of course, you need the build-essential package to compile the drivers: sudo apt-get install build-essential - now it should be safe to restart.
  12. After restart, you will notice that the ThinkPad hotkeys are working now, which is another benefit of kernel 2.6.35. However you still need to compile those WLAN drivers: extract the files from the tar archive (tar -xzf somefile.tar.gz), change into the directory, say “make” and then NOT sudo make install. Instead you copy the file HAL/rtl8192/r8192se_pci.ko to /lib/modules/2.6.35-020635rc1-generic/kernel/drivers/net/wireless/ (depending on your kernel version, of course): sudo cp HAL/rtl8192/r8192se_pci.ko /lib/modules/2.6.35-020635rc1-generic/kernel/drivers/net/wireless/
  13. After a sudo depmod -a or a restart you can use wireless networking again.
  14. Last but not least, you need to unlock your WWAN card via rfkill unblock wwan and you’re done! You can now create new WWAN connections using the standard Gnome Network Manager in the top right corner.

Enjoy! xD

(I am not responsible for any damages)

Update

This table shows the contents of the individual Gobi 2000 firmware files:

Dir Image Remarks
0 Vodafone Image
1 Verizon Image
2 ATT Image
3 Sprint Image includes special Firmware
4 T-Mobile Image
6 Generic UMTS Image
7 Telefonica Image
8 Telecom Italia Image
9 Orange Image
12 DoCoMo Image includes special Firmware
UMTS Default Firmware

May 5, 2010

For sale: iPhone 3GS, 32GB, white

Tags: , , , — 15:08

Ever wanted to buy an iPhone 3GS without T-Mobile contract? Now you can buy mine on eBay! Starting at 1 EUR :)

So, why is that? I love to embrace change. I hate DRM, and I hate big companies that forget what innovation means, I hate company policies that prevent me from using the full potential of my computing device. Microsoft used to be the evil company number 1, but nowadays things change: I see Apple and Google right before Microsoft. They are the successful ones now, and they need to defend that position (I would do the same). They need to earn a lot of money for the share holders and they need to comply with a lot of different contracts they have with other companies. Probably, they can also not experiment anymore to the full extend. Whatever.

Apple products are still normal products, they don’t offer some kind of enhanced lifestyle experience. I am constantly confused when people start talking about their Apple products and how easy and irreplaceable  they are. It’s true, if you buy one Apple product, than you need another one so you don’t run into compatibility issues. Isn’t this exactly what Microsoft was blamed for?

Fact is: There are other good and quite usable smartphones beside the iPhone. Of course if you managed your whole Music library via iTunes, it’s hard to change. But why do I use iTunes? Right, because I bought an iPod once and then I was forced to use iTunes. Then I found out, that iTunes for Windows is somehow slow, so I had to buy the Mac Mini. Then I found out, that the PC keyboard layout is not really usable on a Mac, so I had to buy a Mac keyboard. Then my gray PC mouse was looking strange right next to the white keyboard, so I had to buy an Apple mouse. And so on. What kind of fucked up lifestyle is this?

I agree that Windows Mobile is crap, if you compare it with the iPhone. Not sure about the next version, but that’s not the point. I gave up waiting for the next Windows version many years ago. Fact is, that Windows devices are no option right now and it will probably still be hard to sync them with alternative operating systems or your Google account in the future.

Then there is Google with Android. I had an Android phone until recently, because I thought I might be interested in app development. I didn’t like the user interface (looks like the last 10 years didn’t happen), I don’t like Java. The music player is not what I expected. Then there are the OS update issues, everyone is talking about. Maybe Google learns how to handle that, maybe not. I don’t feel like that should be my problem.

The only remaining option is Palm. I thought they will simply run out of money. But now they were bought by HP. For now, I can trust them, if they commit themselves to WebOS. WebOS supports app development with standard Web technologies like JavaScript and HTML, which is exactly what a Web developer is looking for. So, because I embrace change, I ordered the new Palm Pre Plus last week. My first impression:

  • After entering my Facebook and Google account details, it already knows all my contacts, my email and my calendar out of the box. The iPhone has a lot of different apps (some cost extra), but the built-in functionality is still very basic.
  • It doesn’t wake me at night, just because a new email arrived. Still don’t know how to disable that vibrating alert during the night on my iPhone.
  • I can copy any music or video file directly via USB to the device without using iTunes (that means from ANY computer). How cool is that?
  • It’s black, features a modern user interface and multitasking. Wow!
  • No problems with battery life so far. About the same as my iPhone.

For that reason, I am going to sell the iPhone now. It’s not a bad product, but I don’t feel like it’s the best I can get. I feel like I am forced by Apple to buy things I don’t really need or want. I want my freedom back.

May 4, 2010

Day Against DRM

Tags: , , — 10:35

Well, I was just informed via email that today is the Day against DRM. Yesterday, I read that 1 million iPads and 12 million DRM protected iPad apps were already sold by Apple. So I don’t feel welcome starting that discussion again. I have an iPhone as well, to be honest. Even though my Palm Pre Plus arrives today. Let’s see if that works for me and if the device is less evil. Anyways:

I guess the thing is that there were always activists that bought their bananas and coffee in that special fair trade store a couple of miles away. And there are the “normal” people, that just don’t care and buy their stuff in the super market round the corner. Of course their bananas were sometimes full of poison and of course the coffee farmers in Africa were badly exploited. On the other hand, the bananas are looking nice and the coffee is cheap. You can’t do anything about it and if you do, you are treated like the enemy of the working class. Because, obviously, poor people don’t have the money to buy the expensive fair trade product and others just want convenience after their 14h working day. That makes the whole issue a bit more complicated.

So yeah, there we are. At least it’s time to think again, before we (who can afford it) decide to buy the next product that is defective by design like the Apple iPad. A lot has changed already, for example Amazon sells DRM-free MP3 files, which was unthinkable a couple of years ago. I really enjoy to buy my music there and IMO it’s a lot more user friendly than iTunes.

May 3, 2010

Ihr habt das Scrum falsch gemacht!

Tags: — 14:11

Das PHP BarCamp in Salzburg dieses Wochenende war super. Herzlichen Dank an Evelyne Selak, die scheinbar die Organisation zum Großteil auf sich gezogen hat. Ich könnte sowas nicht leisten und hätte Angst, dass Hotel & Sponsoren absagen und niemand kommt.

Nett fand ich mal wieder Sebastian Bergmanns Vorstellungen zu testbarer Software zu hören. Im Wesentlichen basierte seine Argumentation in letzter Konsequenz auch auf „man will ja dieses und darum muss man jenes so und so machen“. Finde ich nicht falsch und für mich gut verständlich. Nur: Wenn man das so einem normalen Entwickler erzählt, schaut dieser nur befremdlich und sagt dann, dass es anders doch auch geht und viel einfacher ist.

In der Praxis ist es so, dass man schon vor einer großen Herausforderung steht, wenn man Entwickler nur dazu bringen muss, nicht allen Code in eine Klasse zu schreiben. Von „Separation of Concerns“ haben gefühlte 30% der Entwickler schon was gehört. In Büchern wie „PHP Quick and Dirty“ wird es als tolle Idee angesehen, einen PHP-Interpreter herauszubringen der deutsche Keywords versteht, weil man Entwicklern nicht zumuten kann, Englisch zu lernen oder ein Wörterbuch zu verwenden. Alles Zeitverschwendung. In einem anderen Buch zu objektorientiertem PHP wird auf endlosen Seiten auf die Implementierung des Countable-Interfaces aus der SPL eingegangen um dann zum Fazit zu kommen: „Ohne Countable geht es nicht“. Damn, ich habe das in den letzten 10 Jahren nicht gebraucht.

Wenn man auf so ein BarCamp geht, entsteht der Eindruck, alle Anwesenden würden fast immer das richtige Design Pattern verwenden und streng nach Test-Driven-Development (TDD) und Extreme-Programming (XP) Grundsätzen arbeiten. Dass das nicht so ist, ist anzunehmen, zumindest hinterlässt meine berufliche Praxis ein schmerzhaft anderes Bild. Insbesondere problematisch finde ich solche in den Raum gestellten Statements, wenn der Source-Code (wie bei fast allen Web Anwendungen) nicht einsehbar ist. Lieber wird an Open-Source Projekten wie Zend Framework und Magento kleinteilig herumkritisiert. Bei Magento gibt es keine Tests, im Source sind dumme Fehler zu finden, langsam ist es eh und die meisten Zend Framework Klassen seien auch nur schnell zusammengehackt worden. Leider sind die meisten Closed-Source Anwendungen noch sehr viel schlimmer!

Um diesem Problem zu begegnen wird von verschiedener Seite „Scrum“ als Lösung propagiert. Insbesondere wird in dem Zusammenhang die niedrige Fehlerrate und der hohe Grad an Selbstorganisation, die durch Vertrauen und Eitelkeit ermöglicht wird, hochgehalten. Im Nebensatz werden dann noch schnell XP und TDD erwähnt, und schnell ist klar, dass es sich hier um ein Rezept für erfolgreiche Projekte handelt.

Zunächst einmal sollte man TDD, XP und das eigentliche Scrum-Projekt-Management auseinander halten. Das Tests die Qualität erhöhen, hat zunächst nichts mit agilem Projekt-Management zu tun. Häufig wird das in einen Topf geworfen, und dann heißt es pauschal, Scrum würde die Qualität erhöhen. Agiles Projekt-Management soll flexibel auf geänderte Anforderungen reagieren und daher in kurzen Iterationen arbeiten. Dabei sind Tests nicht nur hilfreich, sondern wegen der laufenden Refactorings dringend notwendig – deswegen wird beides zu Recht zusammen genannt. Nur Vertrauen alleine schafft noch lange keine guten Tests, selbst wenn ein Team tatsächlich schafft welche zu schreiben, was IMO auch eine Seltenheit ist. Ich kenne es auch so herum, dass die Entwickler vor lauter Eitelkeit in Panik verfallen und gezielt schlampig arbeiten, um am Iterationsende ein Stück schlechten Code mit schlechten Tests vorweisen zu können. Traut sich dann wirklich immer jemand die Wahrheit auszusprechen, die Arbeit von ein oder zwei Wochen zu verwerfen und neu anzufangen? Eventuell sogar den Mitarbeiter zu kündigen, obwohl seine Familie das Geld dringend benötigt, weil gerade Nachwuchs gekommen ist? Das ist doch so realistisch wie die freie Marktwirtschaft.

Formale Methoden verfolgen das gleiche Ziel der Fehlerfreiheit, werden jedoch oft gar nicht erwähnt oder auch nur in Erwägung gezogen. Weiter sollte es klar sein, dass es Entwickler gibt, die sich selbst organisieren können und andere, die mehr Unterstützung benötigen und nicht die Erfahrung haben um an allem arbeiten zu können. Man hat oft kein Team, das nur aus Senior Entwicklern besteht und selbst diese unterscheiden sich untereinander. Am Ende des Tages kommt es einzig und allein auf die Kompetenz der Projekt-Beteiligten auf allen Ebenen an und nicht so sehr darauf, welche trendige Management-Methode man angewendet hat. Siehe dazu auch Cargo Cult Software Engineering. Statt das anzuerkennen, wird gegenüber Scrum-Kritikern polemisch das Bild vom autoritären Chef gezeichnet, der boshaft Befehle verteilt, so dass dann natürlich nur die offensichtlich bessere Option der magischen Selbst-Organisation bleibt. Von eiserner Disziplin will niemand gerne reden, das wäre am Ende ja noch anstrengend und würde mit alternativen oder hybriden Ansätzen, die nicht der reinen Scrum-Lehre entsprechen, möglicherweise genauso gut funktionieren.

„Most teams purporting to be doing agile software development are not applying the level of technical rigor necessary to succeed at it. Most “agile” teams have actually only adopted Scrum’s project-management practices and have failed to effectively adopt “the hard disciplines” like test-driven development, refactoring, pair programming, simple design, and continuous integration.” Jean-Raymond Abrial, Faultless systems: Yes we can!, IEEE Computer 9/2009

Niemand ist ein Gegner von Vertrauen, Selbstorganisation, Selbstmotivation und Agilität. Soweit ich sehe funktioniert agiles Vorgehen gut in kleinen Teams mit sehr erfahrenen Entwicklern oder wenn die grundsätzliche Architektur zentral vorgegeben ist und nur noch konkrete Details von den einzelnen Entwicklern mit Hilfe eines bereits fertigen Frameworks implementiert werden. Zudem muss man gnadenlos konsequent sein, was je nach Team viel Kraft und Zeit kosten kann bis alles rund läuft. Was nicht geht, ist sich vorne hin zu stellen und zu erzählen, wie toll und einfach alles ist (“klar gibt es hin und wieder Probleme, aber dann redet man halt”). Diejenigen bei denen es wie zu erwarten nicht gut ausgeht, haben es dann einfach falsch gemacht. Solche Totschlag-Argumente erinnern einen an religiöse Gemeinschaften.

April 15, 2010

Mach den Unterschied!

Tags: — 12:44

Liebes Starbucks-Management,

ich war gerade anlässlich der “Mach den Unterschied!”-Aktion wieder auf der deutschen Starbucks-Website. Als treuer Starbucks-Kunde bin ich schon enttäuscht, dass diese sich seit sehr langer Zeit nicht verbessert hat. Dass ich die Aktion dort nicht gefunden habe, mag Absicht sein. Aber dass die Filial-Suche nicht einfach und effektiv funktioniert und nichtmal die Öffnungszeiten sichtbar sind, ist schon sub-optimal. Über das Layout kann man sich streiten, mir persönlich wäre es egal, wenn die Funktionalität in Ordnung ist.

Wie in allen grossen Unternehmen ist das intern sicher gut bekannt, nur ändert sich nichts oder zumindest nicht schnell. Und als Kunde weiss man nicht, ob sich überhaupt etwas tut. Spontan fallen mir jetzt noch weitere Problempunkte ein:

Als es vor ca. 2 Jahren wegen angeblichem “Diebstahl” keine Zeitschriften mehr in meiner Lieblings-Filiale in Berlin-Steglitz gab, war ich relativ verwundert. Wie soll man denn Starbucks als Premium-Marke sehen (bei ca. 4 EUR pro Getränk, gerne auch mehr, soll es das sicher sein), wenn Starbucks selbst zu geizig ist, für 15 EUR einmal pro Monat Zeitschriften zu kaufen. Wenn die am Ende weg sind, kann es doch der Filiale egal sein. Es ist ja nicht so, dass die dann wieder für 15 EUR weiterverkauft werden können. Ich hatte schon überlegt, selbst welche zu spenden, dann aber lieber für 3 Monate auf Starbucks verzichtet und zuhause gelesen. Heutzutage muss man schon dankbar sein, überhaupt eine Zeitung zu finden.

Bei der Auswahl der Mitarbeiter scheint wegen der Expansion nicht alles rund gelaufen zu sein. Man hört von Fällen, in denen sich die Mitarbeiter vor der Kundschaft streiten und gegenseitig der Faulheit bezichtigen. Ich nehme an, das wird sich mit der Zeit legen.

Last but not least bringt es Starbucks fertig immer nach dem Ausweis zu fragen, wenn man mit Kreditkarte zahlt – was bei den Preisen durchaus praktisch ist. Das obere Management hätte es aus “Sicherheitsgründen” so angeordnet und es sei ja nur im Interesse der Kunden, heisst es. Zunächst einmal besteht für mich als Kunde kaum ein Risiko, denn die Haftung für eine verlorene Kreditkarte beträgt maximal 50 EUR und es ist doch recht unwahrscheinlich, dass der Dieb wenn dann nur einen Kaffee bei Starbucks trinken geht. Alle anderen Läden wie z.B. Rewe verlangen keinen Ausweis. In den USA muss man sogar noch nicht mal unterschreiben. Somit hat eigentlich nur Starbucks ein Risiko, falls die Buchung rückgängig gemacht wird. Und selbst dann ist der Verlust kaum den Aufwand wert, denn so ein Kaffee kostet in der Herstellung nur ein paar Cent. Alles in allem eine sinnfreie Aktion mit der vor allem Kunden geärgert werden und Umsatz verloren geht.

So gesehen kann man den Aufruf “Mach den Unterschied!” auch an Starbucks zurück geben. Vielleicht ändert sich ja was. Von der ortsüblichen Unfreundlichkeit Berliner Cafes ist Starbucks zum Glück noch meilenweit entfernt :)

March 11, 2010

Reunion Sucrerie 1920×1080

09:04

Just uploaded a new wallpaper from Reunion Island :)

January 29, 2010

The new Apple iPad

Tags: — 12:08

Bulky iPhone

September 21, 2009

Does the status of a developer matter to you?

11:41

Good morning^^

I feel “angry” about the IT community drifting away from each other. There are the hard-core professionals working on enterprise-scale projects, then there are the employed software engineers working at companies like Google or IBM, and last but not least there is an in-homogenous group consisting of Open Source developers, book authors, bloggers, and technology evangelists. In the past, the gap between those groups was not that important, as the market was small and the technology less complex. We used to be a small group, curious about everything and everyone. IT was not a life-style product and the name Google was worth nothing. I agree, if that sounds romantic and exaggerated.

Personally, I think competence and life-long learning is everything, but of course in reality the association with company names and reputation as speaker or author of well-known books/software are more important to make an individual opinion relevant for others. Some people won’t even listen at all, if they consider you as not relevant or in other words: not helpful for their own career building. You always want to hang out with the cool guys and everyone should see it. I found out, after I discussed a validation issue with Martin Fowler. Some people looked at me like I must be the president of the United States because I got a reply from him. But hey, we are all just humans. Yes, I was also chatting with Niklaus Wirth, my mom, our project manager and the kids on the street – and the strange guys developing JavaScriptMVC ;)

So far, so good. Now the problem is, that well-known opinion leaders can have stupid ideas and unknown developers that are always sitting behind the screen and fear the sunlight can have really good ideas. Also ideas presented in books sometimes do not work in practice, as we had to find out too often. A recent example is a posting from John Resig about why we don’t need jQuery Enterprise – I feel like he lost touch with reality and think some people who are not recognized as world-class JS developers do have a better understanding of what is required for large Rich Internet Applications. And why is that? Because he wants to be relevant:

"If I had to guess and put percentages on the jQuery user base I would
say that they break down something like this:
 - 95% of jQuery user's needs are perfectly met by current jQuery
code/plugins (19 out of 20 users)
 - 4% of jQuery user's create complex interactions - would possibly
benefit from a widget architecture
 - 1% of jQuery users have a need for both complex widgets and a means
of tying them to an existing data model"

Yeah, my current project belongs to the 1% of the market. We are not relevant, work in the underground and feel pretty uncool. Many of the “surprisingly” simple solutions, that shine brighter than daylight, do not work for us. To have a closer look takes a lot of courage and time – and nobody from the outside will take notice. There usually is no time to travel around the world and tell everyone. But if you ask, we are happy to explain. That is what the project business is like. At least you can make some money.

If you ask some employee of a larger corporation about what’s going on inside, something you will rarely find out by searching the Web, you are rewarded with interesting insights. For example, you will learn that IBM employs some no-so-bright developers and that software quality often sucks. True, IBM also has developers and marketing managers that tell you something completely different. That’s why the company name does not matter in the end, but the person as such.

Either way, and that is the good thing about our profession, the computer is always right. It does not care how cool the user is. It does not even care, if it was built by Apple or some No-Name company. It does not care how much money you have. Hard, boring binary facts do count. That’s why developers from companies large and small, well-known and unknown should always keep up communication and don’t make their attention dependent on what they think about the status of others. Good reasons and experience lead to practically relevant opinions. Of course it’s not enough to just have some random opinion, for nobody.

My computers are constantly exchanging information with networks on all over the planet and they did not ask the question about the “why” so far. There is a good reason to fight for net neutrality. My computers are not cool, but at least they do work pretty well.

The bottom line is: Do speak with strangers. Don’t feel important. Never stop learning. Forget about names and brands. From my point of view, we are one community and we need each other to grow professionally and personally.

Reading this post a couple of hours later, another conclusion comes into my mind: Maybe we could encourage more women to work as developers, if some people can forget about their ego.

September 10, 2009

Chrome Bug Tester

Tags: , — 18:06

What these tests do, is basically constructing Arrays and one Object (in the last test), and then output the data using a “for(var i in array)” loop. All browsers do handle objects and arrays as expected and return the data in the original order, just Google Chrome fails. That means there is no way to store data in a certain order in Chrome, if you don’t want to loop over it with “for(var i = 0; i < array.length; i++)", which can result in significant code and/or processing overhead for a number of reasons.

If all tests are green, they passed. Red results indicate failures: