Still learning

torsdag 5 april 2012

Ibland vill facebook vara för enkelt

Jag gillar facebook och har gjort det längre. Jag delar inte väl av mig så mycket saker men jag tycker om att följa alla andra om vad som händer. Om det så är vänner, släkt eller folk man arbetat med. Ibland har man inte träffat personen på 10 år men tack vare facebook så vet jag det mesta om personen. Det viktigaste är också att kommunicera tillbaka med kommentarer och liknande. För detta är like knappen suverän, jag kan på ett enkelt sätt kommunicera till en person "jag ser dig och läser dina inlägg". Inte att jag kanske alltid verkligen gillar men att hålla kommunikationen flytande. Denna like knapp förenklar kommunikationen väldigt mycket så att man nästan som en robot gillar saker.

En ny liknande funktionalitet som förenklar för mig att kommunicera till mina vänner är den snabbrutan som visar vilka som fyller år. När jag klickar där så får jag en lista med personer, en liten textruta för varje och kan i dessa skriva ett grattis meddelande och denna visas på personens logg. Extremt enkelt, copy-paste funkar mycket bra och även användning av standardmeddelande med varierande smilies eller utropstecken. Det har funkat bra, mycket bra, tills idag.

Idag var det tre vänner som fyllt år och jag följde samma förenklade procedur. En av dessa vänner heter samma sak som jag så jag även skrev hans namn. Denna vän är är någon jag gick i gymnasiet med och i stort sett bott granne med sen mer än 10 år bakåt. En riktigt trevlig person!
Efter att ha gjort ett antal kvällsaktiviteter som att träna och äta så öppnade jag facebook och möttes av ett meddelande från en av min namnes vänner. Jag öppnade meddelandet och direkt insåg vad det handlade om. Personen ställde bara en enkel fråga att om jag visste vad som hade hänt med min vän. Min vän har gått bort sen ett par veckor bakåt, vet ej exakt varför och det är inte det viktiga här. Jag kände mycket dum efter att skrivit på en glad grattis på mins vägg men jag hade valt att förenkla för mig att med automatik gratulera de på den lilla listan som facebook visar. Utan att tänka efter. Denna erfarenhet visade mig att jag förenklar kommunikationen med mina vänner men det är egentligen inte att jag vill men för att facebook låter mig göra det. De designar funktionalitet för att jag så enkelt som möjligt kan integrera med mina vänner utan att tänka efter eller att behöva veta mer än vad som krävs för tillfället.

Jag kommer härefter inte att gå på automat när jag gratulerar någon av mina vänner, inte heller med annan kommunikation heller. När jag kommunicerar härefter så vill jag verkligen vara säker på att personen verkligen är med oss fortfarande.

Vila i frid Marko.

onsdag 4 april 2012

Irriterande design på sj.se

Jag är en backend kille och jobbar med sånt som ingen någonsin ser men jag ser till att web front utvecklarna har tillgång till det dom behöver. oftast så bryr jag mig inte så mycket om design men när jag träffar på dålig design så blir jag sur.

Jag var på beställde biljetter på sj.se. Rätt enkelt, ange datum och varifrån och sök. Det kommer en resultatlista och väljer betalar.
Det ska vara simpelt. Men ändå så lyckades jag störa mig en jäkla massa saker.

Först av allt, varför kan inte jag lägga till flera personer när jag väl hittat lämpliga tider? Det är ju ändå inte flygbiljetter jag handlar utan tågbiljetter som man borde relativt lätt verifiera om det finns en till plats eller inte.

När jag väl kommer till checkout så blir det lustigt.
Några saker är:
- Vems namn ska jag skriva under fältet "E-biljett för egen utskrift"? Den som betalar eller den som reser? Har det någon betydelse?
- Varför kan jag inte skriva telefonnummer i internationell format? Det är alltid lika förvirrande när en site försöker bestämma hur formatet ska se ut men användarna har ingen jävla aning. Varför kan jag inte mata in det internationell format och så validerar ni på er sida. Lätt som en plätt och jag slipper huvudvärk.
-För nästa punkt är sen att vad händer när man skriver fel? Ju, man kommer tillbaka och får ett felmeddelande om att telefonnumret är i fel format men fortfarande ingen info om hur det ska se ut. Smart som jag är so listar jag ut att det måste vara en nolla och utan internationella kod. Eller korkad som inte listar ut det innan. ja, det får ni väl fundera över.
-Det som också stör mig fruktansvärt mycket är att när jag får ett fel så försvinner all min kreditskortinfo som jag redan angett och jag måste mata in dessa igen! Seriöst, är det nån säkerhetsgrej? PCI certifiering som spökar eller bara dumhet?
Jag har redan skickat kreditkorts infot i en SSL anslutning till servern, vad spelar det för roll om ni skickar tillbaka det?
- En annan liten idiot sak är att som American Express användare måste jag ange adress och först frågas efter stad och därefter postnummer. Är det inte så att vi här i Sverige anger först postnummer och därefter kommun? Varför kan inte ni hålla samma format? Ska jag skriva Stockholm i stad? Som tur är jag tillräckligt smart för att fylla in rätt detaljer. Eller dum nog att ens ta åt mig.
-Liten detalj också om den lilla checkrutan brevid mailet om jag vill ha beställningsnumret via mail. Är det liksom inte självklart att jag vill ha det? Eller ska jag ta fram penna och papper och skriva ner det?

Men men, jag var på siten i 10 minuter och jag hittade alla ovanstående "felen". Undrar hur mycket mer man kan hitta?

måndag 5 oktober 2009

Fighting with a JVM bug

Had a really annoying issue on of the servers we host. We had glassfish v2 b58g running behind a load balancer and running on java 1.6.0_12. Everything seemed to work until i realized in our monitoring system zabbix that the connection was really unstable. In some cases the system was not accessible at all.
By using telnet i could see following behavior:

[user@jump ~]$ time wget --timeout=30 --tries=1 https://service.com/somesite
--08:30:07-- https://service.com/somesite
=> `service.3'
Resolving service.com... 199.44.48.112
Connecting to service.com|199.44.48.112|:443... connected.
Unable to establish SSL connection.

real 0m10.109s
user 0m0.009s
sys 0m0.025s
[user@jump ~]$

(some values are changed :-)

The interesting thing was that it always takes 10 seconds before the error happends.
Next thing was to use tcpdump and identify what is happening. It showed a lot of connections where closed with TCP RST. And glassfish seemed to throw and exception as it did not know either why the connections died. Anyway, some googling and i first found this ticket talking about possible error.
It lead me to a java bug 6403933 that still is not solved. in the latest JRE:s. And this problem was not in java 5 so it explains why i had not this problem before.

So, thanks to all my new knowledge i thought that upgrading glassfish to v2.1 b60g would help. And it did :-)

tisdag 29 september 2009

Monitoring JVM

I have been having some trouble with a Glassfish installation, version 2 build 58g. The HTTPS connections seems to be little slow sometimes.
Reading the logs did not get me any information so i needed to find some other tools.

First of all, using kill -3 on a process gives some information. It gives a dump of the threads and shows possible deadlocks. For glassfish look in log jmv.log.

Then we have jconsole that is pretty good. The only problem with that one is that it is almost impossible to access to a remote host because of firewalls because of some unknown ports that are used for the RMI connection. You can write your own JMX agent that only listens to one port and tunnel to it or you can run a VNC server on remote server, that might as well. What is good with Jconsole? It shows memory usage, gives possibility for JMX configuration, shows threads and a lot more.

Another tool i found today (it has been there all the time in Java 6) is jmap.
With it you can create a dump of all memory used. It shows all classes, instances, dependencies and a lot more. The amount of information is amazing and I'm still trying to learn how to find more.

To analyze the dump done by jmap you need to run jhat. It reads the dump and starts a small HTTP server where all the data can be accessed.

These three tools i mentioned can all be found in JRE/bin directory.

Another tool i found is Visualvm but i have just not figured out all the advantages with it, trying to learn.

fredag 13 mars 2009

iSendMMS

Yesterday we (Mobispine) released the first application in Sweden that makes it possible to send MMS from an iPhone. We called it for iSendMMS.
This application makes it possible to send one images and text to one recipient.
In the future we will add support for other content types as well.

I have mainly worked with the server side of this product and actually figured out the name it should have. Sometimes techies have ideas too :-)

The application works well but there is some known issues:
- Sometimes first registration fails - register one more time, it might help (if you are a Telia customer)
- Sometimes when using EDGE the MMS are not send - this is something to be solved in next release.
- Multiple recipients don't work even though you add them.
- Works only for Telia Sweden customer - will probably be expanded in the future.
- Can not receive MMS - that will come in the future. For this we need operator integration.
- The MMS is sent even though the information is lacking, wait pressing the send button! :-)

So, if you have a iPhone, download and try the app. If you have any comments, post them here or send mails. We can always make things better!

söndag 1 februari 2009

Drag and drop with GWT

Yesterday i started too look on drag-and-drop with GWT. It is pretty cool stuff and for example this example is pretty much what i want to do on the page I'm working on. I found this example by reading this blog about this functionality. Ajax really gives possibilities for the page and GWT makes it easy to implement.

lördag 31 januari 2009

Installing GWT for Netbeans

I don't know i did mention about how to install GWT for Netbeans. It is actually pretty easy and usually installing stuff in Netbeans in much easier than in Eclipse because the later usually gives these strange dependency errors that can drive you crazy.