Arnljot.com

HTC Hero, en ting til…

by arnljot on Oct.14, 2009, under android, htc hero

Ok,

Nå har jeg hatt HTC’en ennå en stund til. Mens jeg husker det, la meg notere ned noen ting som er irriterende:

  1. Nettleseren fungerer ikke godt i liggende modus. Når man skriver inn en URL så hopper hele vinduet.
  2. Hvis man drar ut høretelfonene mens det ringer mister man lyden og kan ikke høre de som ringer når man svarer.
  3. T9 ordboka burde vise i input feltet hvor man skriver hva den har tenkt å fylle ut for deg.
  4. T9 ordboka burde velge det ordet du skriver hvis det er i ordboka, og ikke et annet. Eks: Ikke velge “Før” når jeg skriver “For”.
  5. Når lyden er stillt inn på stille bør også applikasjoner respektere dette.
  6. Noen meldinger jeg sender legger seg før meldingen de er et svar på i “sms samtaler”.
  7. Hvilket lydvolum er det som styrer et klokke alarm signal? Skummelt å bruke HTC Hero som vekkeklokke, skjer rett som det er at den ikke ringer.
  8. Hvorfor kan ikke “Peep” (twitter klienten) lagre # favoritter?
  9. Hvorfor må nettleseren alltid laste siden på nytt når man trykker “back”?
  10. Når man trykker detaljer på en kontakt, får man av og til detaljene på en kontakt man har sett på tidligere.

Jeg må se å få sendt disse til HTC. Føler bare at det er noen poeng til jeg har glemt. Forresten, jeg elsker fortsatt telefonen!

Leave a Comment : more...

Spring Security 2.0 og brukernavn

by arnljot on Oct.14, 2009, under java

Dette er et typisk eksempel av “LES MANUALEN!” :-)

Ofte er det bare dette man trenger, og ofte gjør man vanskeligere ting for å få tak i brukernavnet til pålogget bruker:


Object obj = SecurityContextHolder.getContext().getAuthentication().getPrincipal();
if (obj instanceof UserDetails) {
String username = ((UserDetails)obj).getUsername();
} else {
String username = obj.toString();
}

Leave a Comment : more...

HTC Hero user experience report after one week

by arnljot on Sep.12, 2009, under android, htc hero

Jeg har kjøpt meg en ny HTC Hero som jeg elsker.

Mine efaringer fra den første uken er veldig positive, men de negative momentene har jeg samlet i en liten e-post jeg sendte til HTC kundeservice.

Her er den vedlagt.

Hi,

I’m the happy owner of a HTC Hero phone. I’ve had it for one week now, and I’m mostly quite happy with it.

But there is a huge unleashed potential of improvement in this phone, and I’m quite surprised that no reviewers have pointed this out.

But I’m sending this experience report to you, hoping that you’ll take notice and improve it.

1) Gmail Application buttons
Why are “Archive”, “Labels” and “Delete” on the frontpage of each mail? The most used function reply is buried on the bottom of each mail. And when you click the “menu” button, all three functions are repeated again. With no “reply”, “reply to all” or “forward” in sight.

My suggestion to you:
Put “reply”, “delete” and “labels” on the bottom of the screen when reading mail.
Long clicking on reply should give the alternative to “reply to all” and “forward”. While long clicking on “labels” should give the alternative to archive. Long clicking on “delete” should give “report spam”.
This way all most used functions are available on the front page of a mail.

The gmail application is the application which gives me most grief as it’s to me the most central application of the phone, and clearly the one which has had a lax treatment by UI QA during development.

2) MMS authoring
Try explaining to a new user how to author an mms with pictures in it, and how to set the subject. This is way too akward. You need to atleast autoset the subject line from the first line of text from slide one, or reuse an email authoring editor.

3) Camcorder
The limit to 250K setting is way too buried on the phone. Put a settings widget for this on the viewfinder, and call it “MMS quality”, 250K is way to technical for most users.

4) Google maps
It can’t use gestures to zoom, PDF and browser can. This is an important missing feature.

5) Browser
How do you go to the homepage? It can be set, but after the browser has started, and browsing has been going on for a while, there is no way to get to the home page. This has to be fixed. Also a gesture to go back is needed.

6) Contacts
When you have contacts from multiple sources (google, pc synchronizing and exchange), and it’s clearly the same contact (name and numbers match). A scheme for merging should be offered. It’s frustrating to have people listed three or four times on the phone.

7) Exchange support
Needs to be improved. For the moment only RoadSynch will allow me to synchronize with my work server. My employeer allows all devices, but the native client still won’t do any synch with it, only authenticates and verifies the user.

These seven issues are the first ones that I’ve identified after one week of use.

I’ve noticed that you’ve prioritised to first fix the speed of the phone, very well. But please don’t forget usability too. The gmail issues are just simply too important to ignore. I look forward to you addressing these issues in some way.

Meanwhile, I’m in love with my HTC hearo and look forward to do Android apps for it!

Kind regards,
Arnljot Arntsen

1 Comment :, , , , , more...

Testing, 1 2 3 testing

by arnljot on Feb.08, 2009, under other

Æ ø å

Dette er en nårsk tæst.

Leave a Comment more...

Pinlig

by arnljot on Sep.22, 2008, under other

Okei, må innrømme at når jeg først hørte denne nyheten så tenkte jeg at den dama var farlig i nærheten av en datamaskin siden hun tilsynelatende ikke har klart å beskytte e-posten sin.

Men det er visstnok ikke hun som har dummet seg ut, det er Yahoo som er blitt manipulert. Bytt e-post leverandør! :)

Okei, så er det hårreisende at man benytter privat e-post i jobb sammenheng fordi man vil unngå offentliginnsyn og journalføring. Men hun ga i det minste ikke passordet sitt vekk…

På den andre side har hun ansvaret for at informasjonen er på avveie, sier det ikke seg selv at jobbsaker skal sendes over jobb e-post?

Det vanligere og vanligere i Norge at arbeidsgivere krever at du ikke benytter privat e-post på jobben. Skjønner det godt hvis Sarah Palin representerer snittet for de ansatte kan finne på…

Men jeg blir likevel frustrert når jeg blir stoppet av WebSense på jobben fordi jeg skal sende en kompis kinoinvitasjon på e-post

Leave a Comment more...

Styrking av demokratiet

by arnljot on Sep.22, 2008, under other

Norge er et demokratisk land, men i følge feks Eva Joly er har nok Norge sine mørketall. NRK slår nå et slag for et åpnere samfunn - ihvertfall hva politikerne angår, hvor det skal være vanskeligere å gjemme seg.

Også får vi bare håpe at skattelistene forblir åpne, skal du se etter meg så finner du meg her (tror ikke linken er tidsforankret).

Leave a Comment more...

Ryanair, UTF-8 og VARCHAR(16)?

by arnljot on Sep.22, 2008, under other

Er det mulig, ja det er vist det! Her har skikkelige geniale IT utviklere vært i fri utfoldelse…

Hele saken på VG.no

Daniel de Carvalho er akkurat innenfor hvis mellomromet mellom navnene ikke teller.

Leave a Comment more...

Computerworld er flytende i teknologi

by arnljot on Sep.05, 2008, under other

Computerworld har skrevet følgende artikkel for vg, se her.

Når du leser artikkelen, søk etter “direkte på prosessoren”. Fantastisk! For en ide Google har, at vi ikke har tenkt på det før??! Vel, nå må Google passe seg, for jeg har hakket vassere ide: Jeg skal legge det rett i RAM, og hoppe over det fordyrende steget det er å måtte gå via CPU i dag. Oi oi oi….

Leave a Comment more...

Erfaringer med Maven, Toplink, Swing, JPA og diverse :)

by arnljot on Jun.16, 2008, under java

Den 5. mai begynte jeg hos ny kunde. Et spennende prosjekt som relaterer seg til produksjonsstyring. Her skal vi skrive en fet klient som gjør alle sine tunge operasjoner på en OAS server vha EJB3.0 Session Beans.

Erfaringer:

1) @MappedSuperclass i javax.persistence 1.0 kan ikke inngå i relasjoner!

Denne var ikke uten videre innlysende for meg, og heller ingen andre på prosjektet her. Men vi skjønnte tidlig at det måtte være dette som var feil. Tilslutt fant vi et quote på en webside som vi tolket dithen at vi ikke kunne bruke det slik vi tenkte. Fra siden http://en.wikibooks.org/wiki/Java_Persistence/Inheritance#Mapped_Superclasses leser man følgende: “It is similar to table per class inheritance, but does not allow querying, persisting, or relationships to the superclass“.  Dette klarte vi ikke å finne i API spesifikasjonen http://java.sun.com/javaee/5/docs/api/javax/persistence/MappedSuperclass.html eller fra bøkene OReily boken om JPA eller PRO EJB 3 JPA API.

2) Maven plugin maven-plugin-plugin har en bug som ikke tillater 1.5 annotations eller andre 1.5 source features i plugins kode.

Denne var værre å forstå. Helt til man dypt inne i Maven dokumentasjonen finner at maven ikke er 1.5 compliant i sin core ennå. Og at plugins kompileres med noe som heter QDox som kjører en Java extractor. Denne extractoren er java 1.4 kompliant.

Maven utviklerne har bestemt seg for å unngå problemet ved å avvise alle feil av denne typen, og heller velge å si at pluginkode må være java 1.4, og at de heller legger til en excludesources feature til maven-plugin-plugn slik at man får bygget pluginprosjekter som benytter seg av java 1.5 features.

For de som vil føge saken er issuen med avgjørelsen her: http://jira.codehaus.org/browse/MPLUGIN-15, og den opprinnelige feilen vi fant er MPLUGIN-21 og MPLUGIN-1 (man legger ikke inn en issue ticket uten å undersøke om de finnes fra før ;-) )

3) JDeveloper kompilere generics klasser hvor inline klasser benytter seg av instanceof

Denne er morsom. Pseudokode:

/**
* Demonstrates a bug in the maven compiler
*
* @author <a href=”mailto:NOSPAM_arnljot.arntsen[at]avenir[dot]no_NOSPAM”>Arnljot Arntsen</a>
*/
public class MavenFailToCompile<T> {
class InlineClass {

public boolean equals(Object o) {
if(o == null) { return false;}
if(!(o instanceof InlineClass)) { return false;}
// This will compile:
// if(o.getClass().equals(InlineClass.class)) { return true;}
if(o == this) {return true;}

return super.equals(o);
}
}
}

Feilen man får er:

C:\code\mvn-compile-bug\src\main\java\MavenFailToCompile.java:[11,21] illegal generic type for instanceof

JDeveloper, har altså en bug som ikke Maven eller JavaC har. Først trodde vi det var andre veien. Men etter å ha dobbelt sjekket spes for generics og JavaC. Så er det Maven som har rett, og JDeveloper som gjør feil når den klarer å lage klassefiler av denne koden.

4) Toplink essentials støtter ikke orphan, toplink essentials støtter ikke ophans

Dette er mest et hjertesukk enn noe mer. Vi hadde ikke forutsett alle problemene vi skulle få med relasjoner gitt problemer med entitymanager.merge(entity) og det at frakoblede objekter hvor alt av relasjoner er nullet ut IKKE blir tatt livet av. I Hibernate når det er din JPA provider så løser man det så lekkert med CascadeType.DELETE_ORPHAN. Det er noe vi alle tar forgitt mange ganger…

Toplink/Toplink-essentials har sitt tilsvar, men er ikke noe særlig lekkert:

Man legger til i persistence.xml en toplink spesifik attributt, som tilpasser sesjonene… (ex name=toplink.session.customizer value=mypackage.PrivateOwnedCustomizer)

package mypackage;
import oracle.toplink.essentials.sessions.Session;
import oracle.toplink.essentials.mappings.OneToManyMapping;
/**
 * PUBLIC:
 * This interface is to allow extra customization on a TopLink Session
 */

public class PrivateOwnedCustomizer extends SessionCustomizer {

    public void customize(Session session) throws Exception {

        RelationalDescriptor entityDescriptor = (RelationalDescriptor) session.getDescriptor(domainmodel.MyEntity.class);
OneToManyMapping mapping = (
OneToManyMapping)entityDescriptor.getMappingForAttributeName(”<propertyName>”);
mapping.privateOwnedRelationship();
}
}

Som dere ser blir dette en svært mer intrengende endring enn en egen Hibernate mapping (org.hibernate.annotations.CascadeType.DELETE_ORPHAN).
Vi har da heller valgt å løseutfordringen den standard JPA måten, uten fancy hjelp fra Hibernate, og følger det PRO EJB 3 boken og JPA spesifikasjonen repeterer igjen og igjen:

Relationship maintenance is the responsibility of the applicatiobn. We are going to repeat this statement over the course of this book, but it cannot be emphasized enough. Almost every problem related to removing an entity always comes back to this issue.

Konsekvensen for oss gitt denne forskjellen mellom “Standard JPA” og “Hibernate JPA” er at våre bønners metoder for å oppdattere entiteter i databasen blir vesentlig mye mer verbos…

5) SwingX har noen bugs…

Ofte har “problemer” i data modeller skyldtes bugs i SwingX sin render pipeline og eventhandling. Feks SwingX issue #855.

6) JDeveloper sin POJO generator gjør et slett arbeid…

equals(), toString() og hashCode() mangler som oftes. Vilket fører til at bugs du opplever i applikasjonen først ikke virker opplagte… Men når du tar en titt på equals() og hashCode() så skjønner du raskt hvorfor…

7) Elementers rekkefølge i Maven POM er  ikke likegyldig.

Sørg for at alle Managment seksjoner står før Plugin eller dependency seksjoner. Og definer properties først, selv om POM userguide sier noe annet. OG definer parent så tidlig som mulig, også dette på tværs av POM userguide anbefalninger. Gjør du dette så vil du unngå mange rare problemer.

8) Dependency management…

Det er kanskje opplagt for alle at <type> er en del av “nøkkelen” til det som ligger i DependencyManagement. Vel, det er det. :)

9) oc4jClient.jar er et mareritt å “mavenize”

Men det lar seg gjøre på noen timer, og med tunga rett i munnen….

10) Timbuktu prosjektet på Apache (mange oracle utviklere der…)

Timbuktu prosjektet har en plugin som lar deg lage et JDeveloper prosjekt av et maven prosjekt… Virker ok nok.

Der har vært mange andre små finurligheter. Som feks at det er lett å glemme og konfigurere opp maven-ear-plugin med rett JavaEE versjon når man skal bruke EJB3.0… I mellomstort prosjekt som det vi har (22 pom filer, 4 pom aggregerings prosjekter - super, server, plugins, maven), så er det utrolig viktig og tidlig få en god struktur og unngå sirkel-avhengigheter mellom prosjektene.

==> Det er vanskelig å mavenize en JDeveloper “prototype”.

Spørsmål vi ikke har fullgode svar på ennå:

1) Hvordan skal vi teste bønnene våre?

Vi hadde opprinnelig valgt EJB3Unit her. Men pga en bug i Hibernate som den test-harnessen er avhengig av så kan vi ikke bruke det (noe sånn som “lazy: cannot fetch more than one bag at a time”). Vi kan bruke JMock, TestNG etc etc… Men vi ønsket oss en test som også loaded persistence.jar fila vår og verifiserte spørringer etc.

2) Hvordan skal vi teste Swing GUI

Vi holder på å teste ut UISpec4J. Så langt så virker det svært lovende.

3) Hvorfor henger Hudson seg når den skal bygge maven prosjektet vårt

Heldigvis er vi ikke alene om denne bugen, og Hudson teamet har releaset en ny versjon av Hudson som lar deg se på mavens minne mens den byger (stack) slik at du kan hjelpe dem i å finne ut av det…

Leave a Comment more...

Telehuset og Infocare

by arnljot on Jun.16, 2008, under other

5. mai leverte jeg inn min Lenovo Z61m laptop til reperasjon. Dette på tross av jeg visste at det var batteriet som var gåent, og ikke maskina.

Infocare insisterte at det var merkelig at maskina ikke kunne virke med hverken strøm eller batteri tilkoblet og ba meg levere den inn. For to uker siden så sendte de meg regning. Ca 2800 kr for nytt batteri (ca 500 kr) og resten var porto og arbeid!

Litt om litt så skjønnte de at dette var drøyt, og ble enig om å gi meg maskina tilbake og stryke hele regninga. Men det var over en uke siden (torsdag 5. eller fredag 6. juni)… I dag ringte jeg og purret, og jovvist, de hadde maskina og ventet på meg. Denne prosessen har vært helt utrolig, for jeg har vært nødt til å sørge for all fremdrift og mas heleveien for å få ting til å skje. Slett arbeid av både Telehuset og Infocare! (Uansett om de peker aldri så mye på hverandre).

Leave a Comment more...

Looking for something?

Use the form below to search the site:

Still not finding what you're looking for? Drop a comment on a post or contact us so we can take care of it!