This wasn’t how I wanted to be mentioned

It’s always fun to be mentioned to some larger audience, but when my tweet got mentioned by the Swedish speaking Android focused blog, it was a bitter sweet pleasure.

Publicerat i Uncategorized | Lämna en kommentar

Thinking about a new laptop

It’s a new year and I’m looking for a few things to change.

One of the smallest of these things is to look into a new computer to bring around, to use at customers and while traveling. The first thing to ponder is on the form factor. Should it be something like a traditional laptop or maybe rather some tablet? What about something which is both?

This kind of confusion is pretty common in my work life. So many factors to consider, so many possible directions to go in. I usually try to go back to a few requirements I consider more important than others. Looking at these, I’m desiring things like

  • Being able to use with it while at a table, in a chair or even standing (in a plane or train or in an office)
  • Really light weight – including the power brick
  • Powerful and being able to use the power

I’m not at my dead line yet, that’s somewhere in the beginning of March, so I’m still thinking in terms of a tablet with attachable keyboard (yes, that could be something like a Microsoft Surface Pro 3) or a traditional laptop or maybe something which is both like a Lenovo Yoga laptop.

All of these count as Ultrabooks (a trade marked term by Intel) which brings to think about the sweet spots and the not so sweet spots. A powerful Ultrabook sounds like I would go for a high end processor like a Intel Core i7, wouldn’t it? Well, yes and no. Yes, if I can actually use all that power, at least while connected to the electrical grid. No, if the processor is being throttled so it runs slow after a few seconds.

All Ultrabooks are built with Intel CPU’s. Most are built with a CPU with a 15 Watt limit (TDP, thermal design power). Going for lightness and speed, there are a few (maybe three) Ultrabooks which are built with the Haswell (fourth generation) version with a 28 W limit. The higher limit translates into longer periods before throttling of speed hits the CPU and internal/external GPU.

In other words – I can actually use the powerful CPU.

With 28 W, it makes sense to go for an i7 instead of an i5. It makes sense to look at the GHz numbers for the CPU. For the 15 W models, not so much – the energy for computations drives heat and heat makes the 15 W model throttle – it’s a speed limit on computation. At full speed, you get a few seconds before throttling kicks in on the powerful CPU’s with a 15 W limit.

One of the few Ultrabooks with the 28 W CPU is the Asus Infinity, aka UX301. It uses the Intel Core i7-4558U CPU with internal HD 5100 graphics (”Iris”).

Possible down side: this is Haswell, i.e., fourth generation Intel Core CPU. At this point, Intel has started to deliver its the fifth generation, Broadwell. Broadwell goes mainly for smaller, not faster, but sure, ”faster” isn’t totally off the table. I don’t think any laptop with the new Broadwell Intel Core i7-5557U CPU is available just yet but please correct me if I’m wrong.

Asus UX301 (not 303):
Old Haswell 28 W:
New Broadwell 28 W:

Looking at the 15 Watt line again, I don’t see any reason to pay extra for the i7 processor. There just isn’t any bang for the buck.

Publicerat i Uncategorized | Märkt | Lämna en kommentar

Use your software to make your hardware sing

I like to read what others are doing. Most of my work life is about enabling projects or line organizations to see what happens to their systems when usage of them go up. Once in a while I’m doing nitty gritty stuff around creating and running simulations to get business objectives proven or disproven.

This webinar sounds fun on the more hand on side of my work:

Getting the Most Out of Your NoSQL DB

Best Practices for Optimizing Infrastructure Performance and Budget
Presented by: Alex Bordei

When harnessed correctly, hardware can generate performance improvements in software of up to 60% in an existing setup, with zero or minimal investment.

In this webcast Alex Bordei will look at how Impala, Elasticsearch and Couchbase perform when scaled vertically and horizontally, over a number of different bare metal setups. He’ll discuss testing that produced results that included: going from one hex-core CPU to two deca-core CPUs, from 32 to 192 GB of RAM, from local to distributed storage, and from 2 to 14 instances.

Tune in to see what setup provided the best performance/price for each application and learn how to get more performance right now, from NoSQL DB.

Yes – using a couple of different database setups as the system under load on some different configurations, see what happens when scaling vertically (”stronger/faster servers”) or horizontally (”more server in parallel”).

This will be fun – and I’m pretty sure I’ll learn still more, for sure getting reminded about some old friends in new shapes. Come on, join us!


Publicerat i Uncategorized | Lämna en kommentar

Nothing new under the clouds

So you just moved your application into a cloud, abandoning those servers in your own data center? Will there be any change in what to performance test? Given the underlying driving forces as lined out in this blog at Dynatrace by Daniel Kaar, I think the answer is no.

In the past, you ran your application in your own data center, on your own servers. When you hit a limit on what your application delivered on your hardware, you had tough choices to make. Buy new hardware and wait for it to be delivered and installed? This did cost not only money but, even worse, time. Rewrite your application to actually use your hardware efficiently? Again, we’re talking time here, even more time. Yes, we might save money on the hardware if we manage to get the application to perform ten or hundred times better – but it takes time until we’re up and running. Your countermeasure might be to put a few extra servers on the side so you can quickly deploy them if this, or one of your other applications, requires them. Did you calculate the cost for constantly keeping extra servers on the side, extra servers which quickly become obsolete? Well, that was in the past.

Now, you’re running your application in a cloud. When hitting a limit, you order a few more servers and, as long as your application scales, you’re up and running inside minutes or hours. Hitting a limit, you can push it further away. It’s as if the limit doesn’t exist any more. With no limits, shouldn’t everyone be happy? Not quite. Those extra servers didn’t come for free. When they’re used, you have to pay for them. That extra hardware is operational cost.

Cost has moved. We have less fixed costs today but more operational costs. In the end, the costs are still there.

Am I, as a performance tester, worried by the cloud scenario? Not a bit! There still are so many badly performing applications out there. Data center or cloud, do you prefer to pay too much in fixed costs or rather too much in operational costs?

Or do you prefer to get a clear picture of how good or bad your application performs? Maybe you even want to control its performance and costs?

Nothing new under the clouds.

Publicerat i cloud, performance | Märkt , , , , , , , | Lämna en kommentar

HP LoadRunner and using the ODBC driver – [MsgId: MERR-108770]

Once in a while during performance tests, I have to put load directly on a database server. Now, this doesn’t happen too often – the most popular tests in the last couple of years have been measurements on the interface seen by the end users. This means web interfaces mostly, sometimes the GUI of a rich client (hello .exe files!). Sometimes rich web interfaces (mainly Ajax frameworks like GWT) and once in a while text terminal interfaces (DEC VT200 or IBM 3270).

In an assignment a short while ago, I was in the position to measure the performance of a database server, using LoadRunner. (Another packaging of LoadRunner is PerformanceCenter; roughly one could describe Performance Center to be the enterprise version of Load Runner containing Load Runner plus a few other components.) This performance test tool knows a lot of different protocols and interfaces and one of them is to use ODBC . Luckily, just about every relational database server knows ODBC too. Good match! Of course, depending on what brand the server is, one may have to set up a data source name (DSN). To be able to add the correct DSN one might maybe install a special ODBC driver from the database manufacturer.

No problem, I did the set up on my Windows workstation, a laptop. Finding out the exact details might take a short while but isn’t too hard. After installing the right tools, including a client to connect and login to a database server and the correct schema, and being able to enter SQL statements to get some result (my favorite is SHOW TIME), it was easy to use Vugen to write a small script of protocol type ODBC.


    int retval;

    retval = lr_db_connect("connect",
        LAST ); //Always returns 0, no need to inspect value of retval

    //If connect fails, an error is thrown so if we are here we have a connection

    retval = lr_db_disconnect("StepName=disconnect",
        LAST );

    lr_output_message("DEBUG: connect worked, disconnect %s",
        LR_PASS == retval ? "worked too" :
        LR_FAIL == retval ? "FAILED" :
        "is in unknown state");

    return 0;

This was a small test script to see if Vugen on my machine could connect to the database. It just connects, then disconnects and reports if it managed.

Did it work on my Windows laptop? Yes.

Did it run when run through the Controller of LoadRunner and therefore executed on a load generator machine? No.

In the test runs output I found the error messages about DB Connection failed, about data source name not found and about [MsgId: MERR-108770] (the kind of error messages LoadRunner shows). All of this was generated on said load generator.

vuser_init.c(8): DB Connection "DatabaseConnection" started ... Wait .... [MsgId: MMSG-108774]
vuser_init.c(8): Error: DB Connection failed {"ERROR [IM002] [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified"} [MsgId: MERR-108770]
vuser_init.c(8): Error: DB Connection failed {"DatabaseConnection"} [MsgId: MERR-108770]
vuser_init.c(8): Notify: Transaction "DatabaseConnection" ended with "Fail" status (Duration: 1.0982 Wasted Time: 1.0970). [MsgId: MMSG-16871]
Abort was called from an action. [MsgId: MMSG-10447]

Aha. OK, so I had to configure the DSN on the load generator – meaning for this particular database vendor, I had to install the ODBC driver on the load generator. That was done rather quickly. At least, quickly after getting access to log in on the load generator. Now I could run again.

Only – I got the same error again!

This time I installed the whole client from the vendor, not just the driver. The client worked as a charm on the load generator, SHOW TIME reported the correct time. Good.

But running through the Controller again, I got to see the same error again. Odd. As usual, the only path is forward so I kept chugging along. Could I use Vugen on the load generator? Yes, no problem. It could run the test script, connecting and disconnecting just fine. Both the SQL client and Vugen worked fine now. Trying it from the Controller again, I still saw the same error.

At this point, it is so good to be able to search the web to get access to good ideas. I rather quickly found a mention about credentials, about ODBC drivers being installed either for only yourself or system wide (i.e., as running either as you or as a Windows system user). Could this be the case? Well, I hadn’t manually added the ODBC driver, I had been relying on the vendors installation program for the vendors driver. Checking in Start → All Programs → Administrative Tools → Data Sources (ODBC) it was quickly clear to me what the problem was.

I found my ODBC driver in the tab User DSN while the tab System DSN was empty.

Bitten by my laziness! Doing this for the first in time in so many years, I should have known better.

The remedy? Renaming the entry in the User DSN tab to start with an extra letter (x) and adding a new entry in the System DSN tab with all the entries copied. Just to be on the safe side, I rebooted the load generator. After waiting for it to be back online, I could run the test script in a test run via the Controller.

Problem solved!

Publicerat i LoadRunner, performance | Märkt | 5 kommentarer

Valfrihetens Android

Som gammal Palm- och Palm Pilot-användare blev jag riktigt glad när jag sprang på kära gamla Graffiti för att mata in text. Minns du Graffiti? Eller har du knappt hört talas om det?



Instruktion om Graffiti på en Palm IIIxe

Det var de där krumelurerna som man ritade på skärmen. Ett streck per bokstav. Bokstaven »a» ritade man som A fast utan mittstrecket. Börja längst ned till vänster, dra snett upp åt höger och sedan ned till höger. När man slutade röra vid skärmen så tolkades strecket som ett »a». Jag älskade det här sättet att mata in, det gjorde nog de flesta som fastnade för de små dosorna från Palm för att hålla reda på livet.

Jag hittade alltså Graffiti för Android och efter ett glädjetjut så fick jag en fråga om det är relevant idag. Min vän hade inte hört talas om det på länge.

Graffiti var ju bundet till enbart Palm och Palm har varit döende rätt länge så det förklarar nog varför han inte hade hört om det på länge.

Är det relevant då?

Ja, jag tycker det. Det är relevant som inmatningsmetod i sig själv och det är relevant för Android att ha många olika sätt att mata in text på. Relevansen är nog lika stor nu som på tiden med Palm Pilot genom modeller som Palm V och vidare till »dagens» Palm utan tangentbord. (Det känns som inget har hänt med dessa de senaste fem åren. Jag upptäcker just att HP, efter sitt köp av företaget Palm, verkar ha skrotat PDA-erna. Om jag har fel, om jag hittade dåligt, så säg gärna till!)

Relevansen för Graffiti ligger i att det är enkelt att mata in text genom att använda samma yta om och om igen. Det som är vanligast idag, att rita ut ett tangentbord på den tryckkänsliga skärmen, fungerar ju bara om jag trycker på rätt ställe på skärmens glasskiva. En halv millimeter för långt ned och jag får in ett G istället för ett T.  Med små utritade tangentbord under glasskiva går det inte att känna skillnad på var gränserna mellan knapparna är. Undra på att jag knappar in fel.

Med Graffiti minskar i alla fall min felslagsfrekvens. Ett B blir ett B med Graffiti. Men visst, perfekt är det ju inte, om jag slarvar så kan krumeluren som skulle blir ett B bli något annat. Jag provar att med skriva krumeluren fel – det blev ett ^. Nytt försök, lite annorlunda provocerad felskrivning: ett Z. Med vanligt skrivande så blir det rätt mest hela tiden, bra mycket oftare än när jag petar på vanliga utritade tangentbordet som jag inte känner.

Jag ser fördelen i att det finns flera olika inmatningssätt på Androidtelefoner. Ibland är jag i en situation där allt stämmer – jag vill skriva snabbt, har båda händerna till förfogande och jag kan koncentrera mig på att titta på skärmen. Ibland har jag bara en hand ledig och jag har kanske inte heller möjlighet att koncentrera mig på att titta på skärmen för varendaste bokstav som jag skriver. Valen blir olika i olika situationer.

Jag ser det som en jättestor fördel att enkelt kunna byta mellan olika inmatningsmetoder beroende på min situation. Att ha flera olika varianter nedladdade på telefonen.

Vad finns det då för varianter?

Som grund ett tangentbord där alla tangenter ligger i ett rakt rutmönster eller ett där raderna som på ett fysiskt är förskjutna sinsemellan. Rakt under G har du skarven mellan V och B. Det är bra i många situationer, det är enkelt att komma igång med. Specialtecken genom att hålla knappar intryckta länge.

En liten förbättring är att se till att tangentbordet har en massa specialtecken på egna knappar. Skriva »ä» blir så mycket lättare med en Ä-knapp än om jag måste hålla fingret på A-knappen länge nog för att få upp några olika alternativa bokstäver och tecken som »â», »à», »å» och även »ä».

Creative Commons - Attribution-NonCommercial-ShareAlike 2.0 Generic

Androidtelefons tangentbord med ordlistor

En större förbättring nås genom att att inmatningen stöds av ordlistord, i stil med T9 på förra generationens telefoner med fortfarande QWERTY-tangentbord.

Programmet Swype som läser av en svepning hit och dit över tangentbordet och gissar vad ordet kan tänkas vara. Tror jag, det här är ett program som jag inte har. (Men videon ser lockande ut.)

Swiftkey som har (tror jag) grammatikregler också för förbättrade gissningar. Tre ordförslag dyker upp ovanför bokstäverna. (Ballt!) Fungerar jättebra men kräver extra mycket tittande och interagerande med skärmen. (NYTT: sedan juni 2012 finns en xkcd-strip om Swiftkey!)

Och sedan förstås det som fungerar bra för mig när jag inte har färdiga ordlistor – exempelvis när jag skjuter in ett ord på främmande språk mitt i en mening. Ett tyskt ord i en engelsk mening kanske. När jag bär en en kopp kaffe i andra handen.