KPN – vervolg

Gisteren (14 juli), zou mijn nummerportering dan eindelijk plaatsvinden, zodat ik voortaan, via KPN, op mijn nieuwe toestel zou kunnen bellen (en internetten!). Dat is half gelukt.

Het afsluiten van het oude (vodafone) nummer is helemaal goedgegaan, het weer aansluiten bij KPN niet. Daar vandaag maar eens over gebeld. “Oh ja, dat hadden we afgesloten voor u, ik zal het weer aanzetten”. Zucht…

Tags: , ,
Posted in Overig | No Comments »

Logo ontwerp wedstrijd

Ik ben een wedstrijd gestart via ontwerpen-voor-geld.nl om een logo (en huisstijl) voor Beetstra IT B.V. te laten ontwerpen. Ik ben benieuwd of er wat moois uitkomt!
Hieronder de ontwerpen tot nu toe.

Tags: ,
Posted in bedrijf | 1 Comment »

De ‘service’ van KPN Hi

Ben vandaag eindelijk door KPN Hi gebeld over de extreme telefoonrekeningen die ze mij gestuurd hebben. Na twee maanden mobiel internetten, wat volgens het geadverteerde tarief € 2,50 per maand zou moeten kosten, kreeg ik rekeningen van achtereenvolgens 280 en 560 euro, totaal 840 euro dus. De reden? ‘Ja, uw nummerbehoud is nog niet gelukt.’

Even vanaf het begin: Omdat ik mijn baan had opgezegd, en een telefoon via mijn werkgever had, moest ik een nieuw abonnement afsluiten. KPN Hi had een interessante aanbieding op de website: een 2-jarig Hi abonnement af met daarbij ‘Eindeloos online’, en een HTC Desire (via voorinschrijving) met korting.
Volgens de website kon je dan internetten zoveel je wilt, het eerste jaar voor € 2,50, en daarna voor € 9,95. De HTC Desire kon dus nog niet geleverd worden, maar na twee weken wachten kreeg ik 14 april mijn nieuwe telefoon. Internet deed het, dus ik kon aan de slag. Geweldig!
Helaas was mijn nummer nog niet overgezet, dus ik moest nog even twee telefoons meenemen, maar goed, dat is te doen. Dat nummerbehoud ging alleen nog niet zo makkelijk. Nadat het 2x was afgewezen (om zinloze redenen: het SIM nummer zou nodig zijn, en daarna opeens het klantnummer ook), werd de nummeroverzetting op 4 mei toegezegd, maar dan pas met ingang van 14 juli! Nou ja, dan maar wat langer met twee telefoons rondlopen.
Maar dan… Zondag 30 mei controleer ik toevallig mijn bankrekening, en blijkt KPN ruim 280 euro te hebben afgeschreven. Goh, wordt het hele abonnement in 1 x geïnd, dacht ik nog. Nee dus. Na online de telefoonrekening bekeken te hebben, blijkt er opeens € 2,10 excl BTW per MB gerekend te zijn voor internetverkeer. Nog even de voorwaarden gecheckt; daar staat er niets over. Die maandag meteen gebeld: ‘Ah ja, ik zie al wat er gebeurd is, u heeft een 0-euro abonnement gekregen. Dat is service(!) tot uw nummerbehoud rond is.’ Ehhhhm nee, ik heb eindeloos online voor 2 euro 50. ‘Ja, ja, ik snap het wel, maar ik kan er niks aan doen. U kunt wel een brief sturen, en dan zijn we meestal coulant(!)’. Service en coulant heeft bij KPN blijkbaar een geheel eigen betekenis.
Diezelfde dag heb ik daar een brief over op de bus gedaan. 23 juni had ik nog niets gehoord, en bel ik de KPN om ze op de hoogte te stellen dat ik de rekening (tot dan toe 280 euro) ga laten storneren. Daarbij wordt me verteld dat ze de brief op 8 juni hebben binnengekregen (de TPG zou er dus maar liefst 8 dagen over gedaan hebben om de brief te bezorgen!), en dat ze binnen 15 werkdagen reageren. Een paar dagen later komt de tweede rekening, dit keer 560 euro, en een SMS-je of ik even snel de vorige rekening wil betalen, want de afschrijving was ‘mislukt’.
Maar goed, vandaag, 15 werkdagen na 8 juni word ik gebeld:

  1. Dat ik inderdaad onvolledig ben voorgelicht, en dat ze me het bedrag tot vandaag toe kwijtschelden
  2. Maar dat het door mij gekozen abonnement pas ingaat op het moment dat de nummeromzetting gelukt is, en tot die tijd internet gewoon zo duur is.
  3. Want zo’n tijdelijk nummer, dat is gewoon niet de bedoeling dat je dat gaat gebruiken (!). En internet gaat ook via het telefoonnummer, dus internet moet je ook niet gebruiken.
  4. Dat ik het nu wist, en dat het allemaal heel logisch was dat er op deze manier kosten berekend worden, en dat ze niks veranderen, en dat de komende rekeningen betaald moeten worden
  5. Dat internet via zo’n tijdelijk nummer € 500 per maand kost, en via het gewenste nummer/abonnement € 2,50 per maand, dat is allemaal logisch, en dat ik dat niet snap, daarover gaat men niet in discussie [heel verstandig van ze... je zou zomaar kunnen verliezen].

Men wou dan nog wel mijn tijdelijke nummer stopzetten, als ik daar prijs op stelde…

PS. Ik las net dat nummerbehoud regelen maximaal 10 dagen mag duren.

Tags: , , ,
Posted in Overig | 7 Comments »

Save State for an Android Compound Component

I’ve been working on a simple application in Android. One of the things I’ve been working on is a custom component. This component allows the user to select a character by spinning a wheel-like component.Text Spinner
To achieve this, I build a compound component, with a simple structure: MyComponent (extends ScrollView) contains a LinearLayout, which in turn contains one TextView for each character. It’s features are very basic:
- snap, so the selected character always appears in the same spot;
- spin-through, so when you spin down past ‘Z’, ‘A’ reappears (and back);
- customised set, so you can choose to select from A-Z, or 0-9, or …

However, when the screen switches orientation, the component is destroyed and recreated, and normally the active scroll position (i.e. the selected character) would be lost. To fix this, Android fires two events, enabling a component to save its state: onSaveInstanceState and onRestoreInstanceState. The required implementation is not very well documented, but not hard either. For this component:

public class CharacterPicker extends ScrollView {
...
  public static class SavedState extends BaseSavedState {
    String allowedCharacters;
    String value;

    SavedState(Parcelable superState) {
      super(superState);
    }

    SavedState(Parcel in) {
      super(in);
      allowedCharacters = in.readString();
      value = in.readString();
    }

    @Override
    public void writeToParcel(Parcel out, int flags) {
      super.writeToParcel(out, flags);
      out.writeString(allowedCharacters);
      out.writeString(value);
    }

    public static final Parcelable.Creator CREATOR
        = new Parcelable.Creator() {
      public SavedState createFromParcel(Parcel in) {
        return new SavedState(in);
      }

      public SavedState[] newArray(int size) {
        return new SavedState[size];
      }
    };
  }

  @Override
  protected Parcelable onSaveInstanceState() {
    Parcelable superState = super.onSaveInstanceState();
    SavedState ss = new SavedState(superState);
    ss.allowedCharacters = allowedChars;
    ss.value = getValue();
    return ss;
  }

  @Override
  protected void onRestoreInstanceState(Parcelable state) {
    SavedState ss = (SavedState) state;
    super.onRestoreInstanceState(ss.getSuperState());
    setAllowedChars(ss.allowedCharacters);
    setValue(ss.value);
  }
}

However, this didn’t work as well as expected. Though the code above is correct (afaik), an error occurred:

java.lang.ClassCastException: android.view.AbsSavedState$1
  at ...CharacterPicker.onRestoreInstanceState(...)
  ...

This exception was caused, as turned out after lots and lots of debugging, by rebuilding the TextView-children in my setAllowedChars() method. Combined with the TextView objects trying to save their own state it caused the error above.
The solution was to make sure this doesn’t happen immediately, but instead to post the request, as such:

	public synchronized void setAllowedChars(String allowedChars) {
		if (allowedChars.equals(this.allowedChars))
			return;
		this.allowedChars = allowedChars;
		handler.post(new Runnable() {
			@Override
			public void run() {
				updateView();
			}
		});
	}

I also added a call to setSaveEnabled(false) on each child component, but this seems to be neither necessary nor sufficient to solve the problem above.

As with many things, once you know it all makes sense, but it took me a while to find out.

Tags: , ,
Posted in development | 1 Comment »

Goeiendag!

Hallo! Dit is mijn eerste bericht hier.

Ik heb net een aantal dagen geleden mijn baan opgezegd, en ben nu bezig mijn eigen bedrijf op te zetten. De afgelopen zeven jaar heb ik als software ontwikkelaar bij Better.be gewerkt, en het is tijd voor iets nieuws!

Ik weet nog niet precies wat ik ga doen, maar ik heb een aantal ideetjes. Ik zal dit blog bijwerken als er iets over te vertellen is!

En zoals ze in Twente zeggen: kiek’n wat ut wordt :)

Tags:
Posted in bedrijf | No Comments »