fredag den 31. juli 2015

TDC Fiber - rent gedemarked


Vores grundejer forening har fået lavet fiber hos TDC, og der er ikke nogen af os der er syndeligt imponeret, tværtimod er flere ufatteligt skuffede over deres dårlige service.

Det startede med vi skulle have lagt el-kabler fra el-masterne ned i jorden. I den forbindelse ville vi have lagt nye fliser rundt på vores veje. Vi snakkede med TDC og kommunen, og det kunne de ikke bare sige ja til. Efter langt tid kom TDC på den ide at det var en god ide, så de skulle pludseligt med alt hast holde et informations møde for at fortælle os om priser, forløbet og hvad det ville indebære og betyde.

Til mødet fik vi at vide det ville koste 5000 at få lagt fiber ind til hvert hus, medmindre vi blev 20 tilmeldte. Så kunne vi få det for 1000. Hvis vi nåede over 30 ville vi kunne få det for 100.
Vi skulle give vores formodede bestilling her, så vi skulle sige hvad vi forventede at ville have af mobil abonnement, tv abonnement, og internet (fiber) abonnement.

Det endte med at vi fik at vide det ville blive til prisen på 100 og at de ville ligge fiber ned til os alle sammen, hvilket jo var en rigtigt god nyhed.

Vores formand ville så have TDC til at koordinere selv med kommunen, men det var helt umuligt. Så vi skulle være bindeled imellem de to, fordi når kommunen sagde et kunne vi fortælle det videre til TDC, og modsat tilbage igen.

Vi får et brev om at vi skal sætte et klistermærke på muren hvor vi vil have vores fiber boks siddende. Man kan så skrive sit telefonnummer på hvis man skal kontaktes når de skal påbegynde arbejdet - hvis man har spørgsmål eller andet.
Derudover havde vi fået at vide at vores første tv skulle være kablet, så nogle sagde vi skulle have boksen siddende det første sted vores første tv skulle sidde.
Her ville jeg så høre om den boks var der det skulle ind henne var der at der ville komme et stik ind i huset, og om tv'et skulle placeres her?
I den skrivelse vi havde fået stod der et nummer til TDC, men når man ringer til dem så får man fat på nogle der ikke har gang i fiber og slet ikke ved noget. De siger jeg skal snakke med min grundejer forening, og så skulle han spørge, og vende tilbage med svar, og så skulle jeg spørge tilbage igen hvis jeg havde opfølgnings spørgsmål. De mente slet ikke fiber afdelingen havde noget telefonnummer, og hvis de havde så vidste de ikke hvad det var (ikke noget med at foreslå at kunne finde ud af det og vende tilbage som normal god kundeservice ville være).
Så ergo kunne jeg ikke komme i kontakt med dem.

Jeg spørg så de arbejdere der ude på vejen og de ved heller ikke noget.
I brevet stod der at jeg skulle aftale en dato jeg skulle være hjemme for at de kunne montere den boks på væggen, men kunne jeg ikke fordi jeg havde ikke noget nummer til dem som var TDC fiber.
De ringer så op til mig, og spørg om den dato de har foreslået er god og jeg svarer nej det er ikke så godt for jeg skal på kursus fra tirsdag til fredag, så hvis det ikke kunne blive mandag kunne jeg ikke.
Damen i røret bliver undrende og siger har du ikke en kæreste der kan være hjemme, men nej hun har ikke flekstid så hun kan ikke "bare" sådan gå som hun har lyst. Kunne jeg så ikke bare tage en fridag? Nej sagde jeg og tænkte (Nej, jeg bruger ikke en hel fridag på at skulle holde jer i hånden).
Nå ja så var det jo helt forfærdeligt for det var jo planlagt med at hver vej skulle tages en efter en og hvilke huse der skulle tages og så var det jo ret besværligt fordi så kunne de ikke bare blive færdige med en vej og fortsætte.
Så spørg jeg om de havde regnet med at der nok var andre der ville sige som mig, så der skulle være ændringer, for så var det jo et fedt. Nogle skal have det ind igennem haven og fortælle hvor den skal være, så nogle tager altså lang tid - så den plan der holder nok ikke særligt godt.
Nej det vidste hun heller ikke noget om, og så måtte hun jo ændre dato'en selvom det ødelagde det FULDSTÆNDIGT for dem der skulle ud at lave det (hun kendte dem helt tydeligt personligt hver og en og havde spurgt dem om netop det lige inden hun ringede til mig).
Hun skulle sende mig bekræftelse på den nye dato.
Den kom aldrig så jeg ringer ind til dem, og hun sender den så til min mail - hvor dato'en er den forkerte. Hun retter og sender en ny til min mail. Den får jeg aldrig, så hun sender den igen - stadig forkert dato. Hun retter igen og sender og nu ser det rigtigt ud.
To dage efter får jeg 4 breve der hver har samme beskrivelse og sidste brev er så det som har den rette dato. Der kører ikke et job der rydder op og fjerner det samme brev og erstatter med et nyt, og spilder bare regnskov på at sende mig ligegyldige breve i stedet. Derudover bad jeg om det på mail, og ikke på brev så var totalt unødvendigt.

3-4 par dage efter sender de en sms til mig der siger tak for bekræftelsen med dato'en fra før (den første dato hvor jeg ikke kunne), og jeg tænker det er jo ligesom ret længe siden - jeg ringer lige og hører hvad det er for en sikkerheds skyld.
Damen fortæller at de havde GLEMT at der kommer to folk ud, og det var den anden dato jeg havde fået bekræftelse på sms for. Så indtil nu havde de kontaktet mig på telefon (opkald), sendt mig breve og mails, og nu ville de så også forsøge sig med sms - som ikke engang fortæller at det er noget nyt. Heldigt for mig jeg ringede derind.
Forklarer hende at jeg STADIG ikke kan den dato. Nå den kunne så sagtens ændres, men ville så tage længere tid fordi det var planlagt. Jeg spørger hvorfor kan manden der kommer første gang ikke bare fortsætte det samme arbejde og blive helt færdigt? Det kunne han ikke for det er en anden mand der skal gøre det. Kan de så ikke følges ad og den ene laver det ene og den anden laver det andet. Nej det var alt for besværligt, så jeg accepterer og der er nu 2 dato'er.

Dagen hvor han skal komme og sætte boksen til, hvor jeg skal høre ham om hvor højt den kommer til at sidde og høre til problemer med mine fliser og alt muligt andet. Jeg har taget en fridag og går derhjemme fra klokken 7 og venter. Det bliver frokost, men stadig ingen mand. Jeg venter og venter og stadig ingen mand.
Da klokken bliver 15 ringer jeg til dem og spørg hvad der sker - kommer han bare ikke i dag? De undersøger og siger jamen han har været der og sat det op. Selvom der stod et telefonnummer på så har han bare ignoreret det, og han har heller ikke banket på eller ringet på med noget.

Så jeg kunne så ikke spørge gutten selvom der stod et telefonnummer på sedlen han skulle ringe på.

Jeg kommer til et bestyrelsesmøde og vores formand fortæller vi har fået 6 måneders gratis hd-kanalaer og en ekstra pakke, fordi de kunne godt se de har lavet mange fodfejl. Vi var trods alt også den første installation TDC har stået for at implementere, så derfor var det lidt svært at have styr på det hele.
 Fint nok tænker man så, det er måske lidt en flad gave eller "plaster på såret" for det koster dem 0 og det er ikke engang noget jeg ville have. Så hellere få noget rabat, men det kan man jo ikke få.


Så kommer dagen hvor den næste gut skal komme og installere mit internet og tv.
Han kommer ind og begynder at montere en lille boks på væggen med det samme, og bagefter forklarer han at det er den lille kasse der sørger for at lave signalet om til noget routeren forstår.
Ikke noget med at spørge om det er fint den er placeret der, eller om jeg kunne tænke mig den et andet sted under bordet hvor det passede bedre.
Han sætter så routeren op og jeg spørger om den har nogle antenner - nej det har den ikke. Hvad så hvis den ikke rækker ordentligt rundt? Så må jeg selv ud og sørge for en anden router.
Heldigvis for mig har jeg en god router der kan række rundt over det hele, men tv-signalet sendes også trådløst så det kunne også sagtens give problemer.

Det hele bliver installeret og fungerer godt nok (-ish).
Internet hastigheden er løbende faldet siden installationen, hvilket jo ikke helt er optimalt, men der er da hul igennem.
Så efter noget tid sender de så en masse regninger - efter 3 måneder sender de 3 regninger.
Det fine i regningerne er så at de ting der takseres for er forskellig fra måned til måned.
Nogle måneder skal man betale noget copyright koda-gebyr, nogle skal man betale for hd-kanaler, nogle koster det ikke noget.
Så går der 2 dage og jeg modtager en opgørelse der skriver jeg skal have et beløb tilbage for hd-kanaler og det ekstra - der er bare ingen opgørelse så man kan se for hvad de giver dig tilbage.
Jeg betaler regningerne, men efter 2 uger sender de så en rykker til mig fordi jeg ikke har betalt.

Jeg griber telefonen og siger hvad er det for en regning jeg ikke har betalt? Den som jeg ikke havde betalt havde de 2 af i deres system, og efter lidt tid kunne de se den var dækket fordi det var noget af det som jeg fik dækket i det jeg skulle have tilbage.
Så spørger jeg så hvor de penge bliver af, for jeg har endnu ikke modtaget noget. Den var på vej ,men nu en uge efter har jeg stadig ikke modtaget noget.
Så spørger jeg til de regninger med hd-kanaler på, og de siger det er det som de giver mig tilbage for.
Hvordan kan jeg så flere uger efter få en rykker på noget som i flere uger før skulle få en dækning tilbage på så den er betalt? Det kunne hun ikke svare på så jeg fik bare fortalt det var det som der var dækket.
Spørger så om de automatisk opsiger det som jeg aldrig har bestilt, men som de vil give mig - så jeg ikke skal betale for det når det er slut? Det kunne hun ikke svare på.
Hun vender så tilbage efter noget undersøgelse og siger det kan hun ikke ændre og så går forbindelsen. Jeg ringer op igen, siger det samme og bliver stillet videre til en der kan sørge for den automatisk opsiger sig selv efter den gratis periode.

I dag har jeg stadig ikke modtaget nogle penge fra TDC, så jeg har betalt for en gratis service hos FDC, og hvis jeg ikke havde været hurtig så havde se selv fortsat med at opkræve mig efter deres "gratis periode" (som så ikke er gratis) var slut.

Ved at flere af mine naboer er blevet opkrævet for udstyr og abonnement uden at de har fået etableret deres TDC Fiber endnu. Andre er blevet opkrævet for ikke at have været hjemme aftalt tid, men de har sendt en information til en email som der ikke eksisterer længere og derfor ikke har kunne acceptere og TDC har bare antaget at de så godtog datoen.

Så ikke nogen imponeret TDC Fiber kunde herfra.

torsdag den 23. juli 2015

Arbejde er dejligt


Men ikke når det er for meget.
Skal færdiggøre en masse projekter for min nuværende arbejdsgiver inden jeg skal have sidste arbejdsdag og der er bare mange store opgaver som gør jeg får utroligt lidt søvn i øjeblikket og det kan mærkes.
Kan begynde at mærke at nu er jeg ved at komme over den "magiske grænse" med at jeg nu ikke kan holde dampen oppe så meget længere fordi den store mængde arbejde er ved at gøre mig træt over så lang en periode.

onsdag den 15. juli 2015

textbox, autocomplete og sikkerhed


Hvis man gerne vil lave sikre textboxe som der ikke er autocomplete, og input foreslag fra, så er der flere måder at sikre sig på.

Først skal man forstå hvordan det fungerer;
Browseren husker textbox'ens id og genbruger derfra autocomplete til at give dig foreslag.
Så hvis du har et felt med FirstName og LastName, så vil browseren foreslå ting du har indtastet i andre textboxe med samme navn, hvis du kommer til dem igen.

Det er meget smart og lækkert, når du gerne vil have du ikke skal skrive dit navn, adresse og andre detaljer som ikke behøver samme niveau af sikkerhed.
Derimod dine passwords, eller lign. må derfor ikke gemmes.

Man kan bruge den simple:
autocomplete="off"

Ulempen er så blot at mange password managers ignorerer dem for at hjælpe dig.
Hvordan kan man så sikre sig at det ikke giver problemer?

Du kan give din textbox et unik id (fx sessionid) i slutningen af id'et, så du er sikker på det er unikt for den enkelte bruger.

OBS: Hvis du bruger typen password-field, vil Chrome og andre browsere i nogle tilfælde selv udfylde dit password for dig.

Hvis du derudover har 2 "password"-fields, vil browseren tro at det er en valideringsform/oprettelsesform, og ikke en login-form, og vil derfor slukke for autocomplete.
For at dette virker i nogle versioner af Chrome, skal nedenstående sættes ind i starten af dit form-tag.

<input type="text" style="display:none">
<input type="password" style="display:none">
Det er også derfor du skal tænke dig om inden du benytter et password-field på dine sider.

mandag den 13. juli 2015

Appsettings i din kode (C# / VB .NET)


Det er et evigt område der skal arbejdes i, og derfor kan man lige så godt lave noget fornuftig wrapper til den slags. Det gør det nemt at arbejde i og have centraliseret.

Public Class ConfigurationSettings
        Public Shared Function AppSettings(ByVal Key As String) As String
            Return GetAppSettings.Get(Key)
        End Function

        Public Shared Function [Get](ByVal Key As String) As String
            Return GetAppSettings.Get(Key)
        End Function

        Public Shared Function [AllKeys]() As String()
            Return GetAppSettings.AllKeys
        End Function

        Public Shared ReadOnly Property GetAppSettings() As System.Collections.Specialized.NameValueCollection
            Get
                Dim reader As New System.Configuration.AppSettingsReader()
                Dim appStgs As System.Collections.Specialized.NameValueCollection = _
                System.Configuration.ConfigurationManager.AppSettings
                Return appStgs
            End Get
        End Property

        Public Shared Sub ShowAllAppSettingsConsole()
            Dim reader As New System.Configuration.AppSettingsReader()
            Dim appStgs As System.Collections.Specialized.NameValueCollection = _
                System.Configuration.ConfigurationManager.AppSettings
            Dim names As String() = _
                System.Configuration.ConfigurationManager.AppSettings.AllKeys
            Dim value As String = String.Empty
            Dim i As Integer
            For i = 0 To appStgs.Count - 1
                Dim key As String = names(i)
                value = CStr(reader.GetValue(key, value.GetType()))
                Console.WriteLine("#{0} Name: {1} Value: {2}", i, key, value)
            Next i
        End Sub 'ShowAppSettings
End Class

tirsdag den 7. juli 2015

Udviklersiden CSHARPUDVIKLER.DK til ny standard


Nu er udvikleren, Laurits West, ved at få mere og mere Umbraco (C#.NET) under neglene, og det gør at der nu er nye muligheder.

Min udvikler side www.csharpudvikler.dk er mit personlige udvikler CV, hvor jeg nu er ved at give det en ordentligt overhaling for at få det mobiltilpasset så det har responsive design så den tilpasser sig mobile devices.
Derudover bliver det en one-page -side som skal levere alle data på en side og nemmere skabe overblik for brugeren. Ved at have alt på en side, forsøger jeg at sørge for at folk læser dele som de ellers ikke ville læse.

Derudover så forsøger jeg at få en større sammenhæng ved at linke ting sammen.
Så når du ser på mine kompetencer, så er det dem der er brugt i projekter og i ansættelser, som derfra giver hvor mange års erfaring jeg har med det.
Når man så ser på fx en ansættelse vil man kunne se antallet af kompetencer brugt, og hvis man trykker på dem vil man kunne se navnene og ved tryk på dem komme til kompetencen hvor man kan se detaljer for den.

Derudover gør Umbraco (C#.NET) det også nemmere for mig at ændre indhold når jeg først har designet og flowet på plads. Så nu fokuserer jeg på at få det hele til at spille ordentligt sammen og se pænt ud.

Udviklersiden vil opleves som mere "levende" fordi der sker ting undervejs når man kommer ned igennem indholdet, som gør indholdet interessant.
Jeg leger lidt med nogle ideer om formatering og opstilling som skal bryde nogle mønstre imens man scroller ned af siden, så man får fokus på forskellige dele.
Jeg er ikke nået i mål endnu, og der er stadig en del jeg gerne vil have lavet, men det er godt på vej og udsigten er virkeligt god.

SCRUM - Vores modificerede tilgang med visuel projektledelse


Der er rigtigt mange der kører SCRUM, og rigtigt mange der ikke ved hvordan de skal gøre det.
Jeg personligt ser det som et middel til at skabe overblik, specielt hvis man bruger grafiske virkemidler så man nemt kan se hvilke ting der er i hvilken state.

Så vores SCRUM board er opdelt i forskellige faser, så kan se om en opgave er i gang, om den er tildelt en udvikler, om den afventer nogen, om den er til test.


Derfor har vi følgende bokse:

NAVN       I DAG       TEST HOS OS       TEST HOS KUNDE       AFVENTER KUNDE       AFVENTER OS

Så i NAVN står udviklerens navn, Laurits. Her sættes de kort som jeg skal løse i sprintet, og som jeg ikke er gået i gang med endnu. Så ved sprintstart flyttes der løbende opgaver ned til mig fra en boks med opgaver eller "smut-sager".
I feltet I DAG, er sat kort på med de opgaver jeg arbejder på i dag.
TEST HOS OS betyder at vi er ved at teste det. Vi har vores egne testere, eller kan være udvikleren der er ved at gennemteste det hvis vi ikke har en decideret tester til det.
TEST HOS KUNDE er at vi nu har testet og set det fungerer, så nu får kunden lov at teste.
AFVENTER KUNDE er de opgaver hvor der mangler afklaring - fx i bad om den her funktionalitet på den side her der ligner den jeg skal lave nu, men skal ikke ha denne. Er det meningen? Eller de skal afklare ting.
AFVENTER OS er hvis vi har at en anden person skal levere servere, der skal laves noget database noget, der skal ses på nogle problemer. Her kommer de opgaver som udvikleren ikke selv tager sig af, men andre i firmaet tager sig af og vi venter på.

Derudover har vi boksene:
OPGAVER       SMUT       DONE

OPGAVER er de opgaver der er indmeldt til sprintet som vi bør se på.
SMUT er opgaver der er mindre som man kan tage imellem andre opgaver hvis man lige har en halv time og mangler at lave noget.
DONE er de opgaver der er færdig testet hos kunden, og accepteret. Når de kommer i done, så aftales der med kunden hvornår de ønsker de kommer i produktion.

torsdag den 2. juli 2015

Dokumentation - One standard to rule them all

Dokumentation er altid besværligt, og kunden vil ofte gerne have noget på skrift inden vi går i gang for at vise du forstår det, og i er enige, og de kan komme bagefter og sige vi har aftalt der står dette i designdokumentet, men sådan ser det ikke ud, eller sådan virker det ikke.

Så er udfordringen så altid at man helst skal have alting med, og her kommer et forsøg på at få det hele med:

1.0 Introduktion til designrapporten

1.1 Revisionshistorik

Væsentlige ændringer i dokumentet noteres.

Version
Dato
Ansvarlig
Beskrivelse




1.1       Referencer

Referencer til andre rapporter.
Dokumentnavn
Designguide til "den nye superapp"

2.0         Beskrivelse af websiden

2.1       Formål

Kort beskrivelse af websidens formål.

2.2       Design

2.2.1        Skærmbilledet

Kort beskrivelse af skærmbilledet med billede eksempler.

2.2.2        Designstandard

Beskrivelse af elementer som ikke er beskrevet i designguiden.
Websiden er designet ifølge designguiden til d-service.

Designskabelon

Skrifttyper

Farvekoder

Afstande

Ikoner

Knapper

Elementer

Faktabokse

Andet

2.2.3        Design af print

Er der mulighed for print på siden, beskrives designet af printet med billede eksempel.

2.3       Rettigheder

Rettigheder på websiden beskrives.

2.4       Tekster

Formuleringer som hardkodes, samt elementer hvor der benyttes tekster som kunden skal kunne administrere beskrives.

2.5       Links

Oversigt over alle links samt referencer. Dette indebærer også bogmærker.

2.6       Print

Beskrivelse af print-funktionen uden billede eksempel. Hvordan skal den opføre sig.

2.7       Pop-up, tooltip og advarsel

2.7.1        Pop-up

Kort beskrivelse af hvornår pop-upper vises. Beskrivelse af tekster og knapper er beskrevet i designrapporten ”Pop-up, tooltip og advarsler”.

2.7.2        Tooltip

Kort beskrivelse af hvornår tooltips vises. Beskrivelse af tekster er beskrevet i designrapporten ”Pop-up, tooltip og advarsler”.

2.7.3        Advarsel

Kort beskrivelse af hvornår advarsler vises. Beskrivelse af tekster er beskrevet i designrapporten ”Pop-up, tooltip og advarsler”.

2.8       Funktioner, usecase og behandling på backend

2.8.1        Funktioner på websiden samt usecase

Beskrivelse af funktionerne på websiden samt usecases.

2.8.2        ”End-to-end”-usecase

Flowbeskrivelse med tilknytning til øvrige programmer.

2.8.3        Overordnet beskrivelse af behandling på backend