Archive for the ‘Ikke kategoriseret’ Category

Benford’s Law

søndag, august 28th, 2022

I was curious as to what I actually could do with Benford’s Law. Could I detect anomalies that would warrant questioning? Where could I apply it?

So – first off – what is Benford’s Law – or the Newcomb-Benford law? It is a natural occurring distribution if the domain spans several orders of magnitude. It states that 1 is then – by far – the most prevalent most significant digit. The theoretical frequency is found by applying log10(1+1/digit).

Let’s say our data set is based upon the number of people living in cities, then the cities with 10-19 million, 1 million, 100 -199 thousand, 10-19 thousand, 1 thousand, 100-199, 10-19, and 1 citizen would cover a little more than 30% of the cities, whereas cities with 20-29 million, 2 million, 200-299 thousand, 20-29 thousand, 2 thoushand, 200-299, 20-29, and 2 citizens would cover 17.6% of the cities.

I find this counter intuitive, and thus very fascinating.

I had a bank statement with deposits and withdrawal – 212 in total – I though, why not try to apply Benford’s law to that lot and see how well it fits, and if not, if there are any explanation.

To get the most significant digit I chose to use the Log10 function basically writing the number in scientific notation. Then taking the exponent and divide the original amount to get a power of one, then finally take the absolute integer value:


Let’s assume the amount is 12345, then log10 would give us 4.091491, we then divide 12345 by 10^4 to get 1.2345, then take the integer value – not rounding – this gives us 1.

Using dplyr in R to get the frequency for this, I used:

data_hist <- %>% group_by(digit=abs(as.integer(amount/10^floor(log10(abs(amount)))))) %>% summarize(count=n()) )

Which gave me:


To add the Benford values simply add the values:

data_hist$benford = log10(1+1/data_hist$digit)

We would also like to have the frequency as a percentage, not as an observation count.

data_hist$freq = data_hist$count / sum(data_hist$count)

Now, we could use these two values to calculate which digits are the most off either simply using freq/benford or (freq-benford)/(freq+benford) – but let’s just plot the data as a bar chart along with the Benford curve.

ggplot(data_hist, aes(x=digit, y =freq)) + geom_bar(stat=”identity”) + geom_line(aes(x=digit, y = benford)) + labs(title = “Bank payment most significant digit: Benfords law”) + scale_x_discrete(“digit”, data_hist$digit, waiver(), factor(data_hist$digit))

It would seem tha 3, 5, and 9 are overrepresented, which begs the question: Why?

It turns out, that I have subscriptions in here and those are not random, and will thus skew my distribution.

While this was relatively easy to do, and I did spot a few outliers, it seems I didn’t quite get what I was looking for. And the 4 subscriptions didn’t expose themselves in this plot – maybe if the other subscriptions had been removed. Studies for another day.

Pipe Dream

mandag, august 29th, 2016

In which we speculate about software reuse, serverless architecture, and find out it is all a pipe dream in the end.

Let us begin in a different business: Plumbing. I can go to an online store and buy pipes and fittings, taps, heaters, and a lot of other stuff. Components can be bought for electricians and electronics in a similar fashion. That is, if I want, I can buy components and put them together as I see fit – luckily you have to be certified to do create installations in your home – at least in Denmark. Software on the other hand is almost always bought in complete installations.

While it did not make any sense to buy a host of single components in the old days, there is basically no obstacles to do so today. Amazon (and other *aaS vendors) sell by the second or even millisecond, which means you could make micropayments for micro – or even nano – services. It seems it should be possible to have a McIlroy (bash) pipe connection of components across the internet with differentiated payment schemes. Perhaps a Mac Automator for the web.

The step up from “basically no obstacles”

Communication – both the format and the pipes are obstacles. In plumbing, you cannot seamlessly fit a 1 inch to a 2 inch pipe, which is visibly different. If water runs through the system, then water runs through every part. In IT the common denominator is text. Sometimes this seems too simple, but it works quite well for bash programming.

The other element, the pipes or rather the network. Networks are slow compared to local disk access, yet n-distributed parallel execution is extremely fast, and with a forwarding address on the output, i.e. redirection of STDOUT in bash, the data would not have to return to the origin for every segment.

This then suggests that there should be a protocol along the lines:

setup: parameters, forward to, payment key
execute: stream of data

Having such a setup would allow you to actually define the schema of the data – if it conforms to a schema. This in turn would allow SQL like filtering, but that really depends upon the service.

Why would I want this?

Well, first off, real re-use. It seems silly that we’re re-inventing the wheel every time a new Rails/Django/Drupal/… is installed. It seems unnecessary that a non-programming customer should have to setup and maintain a webservice to do something which is already possible to do by using existing components possibly in a different way. Even if the customer does this, everyone else with the same ideas would have to do the same for themselves.

Naturally I want it because I’ve run into some missing functionality in one product, that I could construct myself or use from another vendor, but without the pipe and the linking it is not possible.

Whether it is a poor search functionality in a webshop, an e-mail filtering/handling service, or news feeds I’d like to filter – I have to do it myself, and I have to pull the information.

Why it is all a pipe dream after all

Spinning up the services can take a lot of time. Sending massive amounts of data across the web will congest an already congested infrastructure. Hoping for every service provider to provide a standardized service interface is in itself a pipe dream.

Pipe dream – a hope, wish, or dream that is impossible to achieve or not practical (Merriam-Webster)

Programming by the pound

søndag, august 21st, 2016

In which we try to figure out why some programs are worse off for the end users than they need to be.

We are likely to spot the root cause and less than pleasing hairdos if a hairdresser cut by the pound, that is, with no regards to style or aesthetics, but rahter focused on cutting a pound of hair off each customer.

We’d see: bowl cuts, bald, half-bald, … Speed and weight is of the essence.

The source code of some programs looks as if they have been created in a similar fashion. Just push code in without a sense of style or aesthetics. Copy and paste, ad hoc design from the beginning, Rube Goldberg like amendments.

Most people will not be able to see this, as they only have the user interface to interact with, if the software ever hits the market.

The programmer on the other hand will never learn any better. Basically he is doing a stellar job – the customers get served in a speedily manner, and there are no complaints. As mentioned above, the customers are less likely to spot the ugliness as they don’t see the code. The programmer rarely sees other peoples code, and likely cannot tell the difference between a good style and his own.

Sort of having a blind barber tell you: “Looks good to me.”

But if the end users are happy with the delivered product should we care at all? Well that depends, we’re all paying the price. The price for the software has to be earned somewhere. If the productivity of the end users doesn’t increase to cover the cost, then the choice to get the software in the first place was a bad idea. The cost of updates and additions goes up the more convoluted the source code is, because it will take longer to fit the new requirements into the existing code. Starting from scratch means losing the entire investment and betting on another system with a high probability of having the exact same issues. You may even lose the part of your data.

I’m not arguing that the hairdressers shop should be a cathedral, rather that it shouldn’t be a shanty building with wires and hoses dangling in dangerous positions.

Whenever you spot a user interacting with a user interface, and they become frustrated, odds are that the developers had more focus on programming by the pound getting things done than actually enabling their customers to get things done.

Waiting on IoT

torsdag, juli 31st, 2014

Sometimes I just can’t wait for the world to catch up, for everyday items to adopt to Internet of Things (IoT).

From 2015 you’re obliged by Danish law to secure your license plates for your car with 2 screws – not that it will prevent theft, just that it will make it more difficult, because as we all know, then using a screwdriver is beyond most peoples capabilities. – Sorry, but stupid laws really deserve sarcasm and contempt.

If you don’t abide by the law, you can be fined an estimated 1000 DKK ~ 180 USD

Let’s see which other options might have been available.

We want the license plate to make it possible to easily identify the car for purposes of ownership, theft, debt, and insurance. The license plate will be tied to the cars model, registration number, and the owner.

If the car’s on-board system could know these things, then it could fill out an e-ink license plate, and it could color code the plate on basis of debt, reported theft, warrants, or other such interests. Sure an e-ink license plate would be hacked and you’d see people driving around with Pong being played on their plates.

If the car had a GPS it could even report its location when reported stolen.

If the car could only be started by a smartphone app, then it would be possible to tell whose phone was used to start the car. As an added bonus you could lease a key to someone else and revoke it when they weren’t allowed to drive anymore, e.g. a valet key.

Toll roads could be billed automatically without the need to stop up or have another device in the car.

I know – you could have Big Brother monitor every car, fine everyone speeding, track every ghost driver, every freak occurrence, but then, how bad would that be?

I know – you can’t push technology into older cars. I’m just waiting for some meaningful adoption of – IMHO – sensible things.

IT-Branchens manglende eksperter

lørdag, juni 1st, 2013

”Hver fjerde it-virksomhed kan ikke skaffe medarbejdere” (Pressemeddelelser, 2013)

Det er jo en trist titel, når man som it-arbejder ikke uden videre kan finde ansættelse i en it-virksomhed.

Nu er jeg sikker på, at problemet ikke blot drejer sig om, at der skal være lige så mange ledige, som der er stillinger, der skal besættes. På det plan er en it-arbejder ikke en ressource, men et selvstændigt individ med viden indenfor et specifikt område eller måske flere distinkte områder.

En af problemstillingerne er at matche, hvad virksomheden ønsker, med det de potentielle kandidater tilbyder. Det er som regel klart for fagmanden, at kunden ikke helt kan forklare, hvad de vil have, fordi de ikke har fuldt kendskab til det domæne, de ønsker noget i. På samme måde er det svært for kandidaterne at præcist profilere, hvad de kan, hvorfor det er en gevinst for firmaet, og hvad de ønsker.

Når dette så er sagt, så kunne det være interessant at vide, hvor mange ledige, der egentlig er i branchen, hvor mange ledige stillinger, der er, og hvilke områder det drejer sig om.

”Ifølge EU Kommissionen vil EU-lande frem mod 2015 komme til at mangle op mod 900.000 it-eksperter”

900.000 det er godt nok mange. Lad os kikke på nogle tal for at danne et overblik.

Iflg. It-branchen (It-branchen i tal), så var der i 2010 82.649 fultidsansatte i It-erhvervet. Kikker man derimod på Statistikbanken (RASA11: Beskæftigede (arbejdssted) efter område, branche (DB07), socio-økonomisk status, herkomst, alder og køn), så er tallet 47.704 det giver grund til forundring om, hvem der har ret, men det hører til i en helt anden diskussion.

For at ekstrapolere til resten af EU, så antager vi løseligt, at den samme procentsats af arbejdsstyrken arbejder i it-branchen.

Statistikbanken fortæller os, at der i 2010 var en arbejdsstyrke på 2,7 millioner WolframAlfa siger 2,9 mio. i 2011 (Labor Force European Union). Sammentæller man de 27 nationers tal opnås en samlet arbejdsstyrke på 245 mio.

Lidt matematik fortæller os, at it-branchens ansatte udgjorde 47.704 / 2.700.000 = 1,8% af den samlede arbejdsstyrke i Danmark i 2010.

Nu er it-branchen heldigvis i fremdrift, i hvert fald hvad angår beskæftigelse, kikker vi på Statistikbankens tal ser det ud til, at der
fra 2010 og frem er en year-on-year growth rate på 2%.

Bruger vi disse tal, så var der i 2011 ca.102% * 1,8% * 245 mio. = 4,5 mio. It-folk i EU.

Det giver os at der i 2015 – 4 Ã¥r fra 2011 – vil være omkring: 102%^4 * 4,5 mio. = 4,9 mio.

De 900.000 eksperter antages at skulle være indeholdt i disse 4,9 mio. hvilket betyder, at eksperterne udgør: 900.000 / 4.900.000 = 18% dvs. et sted mellem hver 5. og hver 6. plads mangler en ekspert i 2015.

Benytter vi It-branchens tal, 82.649, i stedet når vi frem til 11% eller hver 9. plads i EU.

Hvad er en ekspert?

Hvis der er behov for eksperter, hvad er så en ekspert, og er domænet IT måske lidt for bredt til, at man kan danne sig et godt billede af, hvor det ville kræve en indsats, og hvad den indsats bør fokusere på.

Niels Bohr

Niels Bohr har engang sagt: ”En ekspert er en person, som har begået alle de fejl, som er muligt at begå inden for et begrænset område.” (Bohr) Jeg går ud fra, at Niels Bohr mente, at personen så også havde lært af sine fejl og ikke følte trang til at forsøge disse igen. I princippet kunne man sige, at denne person havde brute force gennemprøvet samtlige kombinationer i domænet.

Givet denne definition, ja, så er der ingen it-eksperter. Måske er IT for stort et domæne, og det vokser ganske hurtigt.

10.000 timer

Malcolm Gladwell foreslår 10.000 timers reglen i sin bog Outliers (Gladwell), hvilket nogle finder en rimelig regel (Antonio, 2009), og andre ikke (Why Gladwell’s 10,000-hour rule is wrong, 2012).

Hvis vi nu benytter denne regel og kobler den med et mandÃ¥r pÃ¥ 1920 timer – lad os for nemheds skyld benytte 2000 timer/Ã¥r – sÃ¥ vil en ekspert blive skabt ved 5 Ã¥rs dedikeret arbejde pÃ¥ det aktuelle domæne.

Det betyder, at en 5-årig universitetsuddannelse ikke kan klare at undervise bredt indenfor et smalt felt, f.eks. i datalogi lære de studerende om mere generelle ting, som: Abstrakte datastrukturer, algoritmer, analyse, design, og databaser. Men derimod ville være nødt til at presse de studerende til at tage et entydigt karrierevalg allerede på første studiedag.

Desuden vil det tage underviserne 5 år at blive eksperter på et enkelt nyt område, og først derefter vil de være klar til at undervise, hvilket giver en lead time på 10 år før de første studerende bliver eksperter. Dvs. vil ville se de første iPhone eksperter i 2017, hvis underviserne startede ved lanceringen i 2007.

Da it-branchen har en noget hurtigere produktionstid af nye teknologier og koncepter, sÃ¥ lader det ikke umiddelbart til, at vi skal sætte vores lid til, at universiteterne skal uddanne eksperter – i hvert fald ikke indenfor et snævert domæne. De skal derimod danne eksperter i at lære og at tænke selvstændigt med fokus pÃ¥ forskellige generelle domæner, sÃ¥ledes at de studerende bliver rustet til livslang selvstændig læring.

Måske er det ikke denne definition på ekspert, der er tale om. Om ikke andet, så er 2015 ikke 5 år væk, men 1½, hvilket vil betyde, at man bør starte i dag og de næste 78 uger arbejde dedikeret på et emne 128 timer om ugen. Dvs. omkring 5 timers søvn alle ugens 7 dage, og stort set resten af tiden fokuseret på emnet.

Andre definitioner

Wikipedia foreslår flere muligheder i forbindelse med ekspert.

Klog af erfaring

Denne minder meget om Niels Bohrs version, dog behøver man ikke at have begået alle fejl, men det betyder så omvendt, at hvis man blot har arbejdet med IT og gjort sig nogle erfaringer, så er man ekspert. Jeg mener ikke, at jeg bliver skatteekspert ved at have gjort erfaringer med min selvangivelse, så umiddelbart virker denne definition meget vag.

Selv om den ligner Niels Bohrs definition, så er resultatet helt modsat, nu er alle eksperter.


En specialist kan løse opgaver, en ekspert kender til løste opgaver, en lægmand kender ingen løsninger, og en tekniker kender til nogle løsninger.

Umiddelbart finder jeg at vi så alle tilhører alle 4 grupper på én gang, når IT er domænet. Det at man kan løse en opgave i bedste Storm P. stil gør jo ikke en til en specialist, og slet ikke indenfor en anden gren af IT.

Arthur Mellen Wellington

Arthur Mellen Wellington har udtrykt noget i stil med: ”Kunsten at gøre godt med en dollar, hvad enhver klodrian bruger 2 dollar på tilnærmelsesvist at lave.” (Wellington) Det drejede sig dog om ingeniørfaget.

Umiddelbart ser en sådan definition jo god ud for forretningen, men den er nok ganske svær at måle, og givet erfaringen fra det virkelige liv, så lader det til at vi mangler mange eksperter og har manglet dem de sidste 20 år.


Jeg spurgte en 13-årig dreng: ”Hvad er en ekspert?” Til hvilket han svarede: ”Det er en, der ved alt om noget, kender alle reglerne, og kan alt (med den ting).” Hvilket måske er den bedste definition, jeg har hørt.

Relativ ekspertise

Egentlig kan alle disse forklaringer på, hvad en ekspert er, være lige gode, hvis man antager at det er relative termer frem for en universel uddybende term. Altså at man kan påtage sig ekspert titlen, hvis man blot ved alt det, de andre i nærheden ved, og lidt mere til. Givet Google og andre søgemaskiner, så er ”i nærheden” efterhånden blevet meget bredt, men nu er det jo ikke alt på nettet, der er lige sandt.


Det kan være ganske fint at filosofere over, hvad en ekspert er, og hvordan det relaterer sig til hele it-branchen. Men på den teknologiske forkant, hvordan ser tingene så ud, hvad er det, der formentlig kommer til at ske i den nærmeste fremtid, som vi skal være opmærksomme på.

McKinsey & Company har for nyligt fremlagt Ten IT-enabled business trends for the decade ahead (Ten IT-enabled business trends for the decade ahead, 2013) som omhandler:

  1. Joining the social matrix
  2. Competing with ‘Big Data’ and advanced analytics
  3. Deploying the Internet of All Things
  4. Offering anything as a service
  5. Automating knowledge work
  6. Engaging the next 3 billion digital citizens
  7. Charting experiences where digital meets physical
  8. ‘Freeing’ your business model through Internet-inspired personalization and simplification
  9. Buying and selling as digital commerce leaps ahead
  10. Transforming government, health care, and education

Gartners forudsigelser ligger pudsigt nok ganske nært (Top 10 Strategic Technology Trends for 2013):

  1. Mobile Devices Battles
  2. Mobile Apps and HTML5
  3. Personal Cloud
  4. The Internet of Things
  5. Hybrid IT and Cloud Computing
  6. Strategic Big Data
  7. Actionable Analytics
  8. Mainstream in-memory computing
  9. Integrated Ecosystems
  10. Enterprise app stores

De stillingsopslag, jeg har set, ligger ikke særlig tæt på bare en enkelt af disse fremtidstrends. Det kan jo betyde, at disse stillinger allerede er besat af eksperter og specialister. Mit gæt er dog, at vi stadig er forankret i 2001-mindsettet, hvor det hele drejer sig om den enkelte forretning, og at kunder bare skal acceptere one-size fits all samt integrationsmulighederne/mash-ups er så godt som ikke eksisterende.

Set i det lys, så er de 900.000 manglende eksperter sikkert et meget godt bud, altså underforstået at op mod 20% af it-branchen vil i 2015 være beskæftiget indenfor områder, de ikke før har berørt, herunder de 10 McKinsey visioner, men om de er Bohr-eksperter eller blot relative eksperter, det vil fremtiden vise.

NÃ¥r jeg ser pÃ¥, hvilke produkter vi, i it-branchen, leverer i dag, sÃ¥ kunne det se ud til at vi mangler mere end 900.000 eksperter allerede i dag. Se evt. Rigsrevisionens beretning om POLSAG (Beretning til Statsrevisorerne om politiets it-system POLSAG, 2013) eller Bonnerup rapporten (Erfaringer fra statslige IT-projekter – hvordan gør man det bedre?, 2001) og 10 Ã¥rs indsigten (Bonnerup-rapportens ophavsmænd 10 Ã¥r efter: Ingen er blevet klogere, 2011)

De personer, der i dag formentlig har mest kontakt med kommunerne, de ældre og de svage, bliver til næste år ramt af Lov om digital post (Lov om digital post ). Det er rigtigt, at de kan fritages, men skal vi ikke allerede nu gætte på, at det kræver en digital ansøgning? Vi bliver formentlig klogere, når virksomhederne fra 1. september i år kommer på den løsning.


Når man, som jeg, er ledig, og har indblik i de ovenstående ting, så synes jeg det er trist at se en udmelding om at hver fjerde it-virksomhed ikke kan skaffe kvalificeret arbejdskraft. Gad vide, hvor mange it-eksperter, der er, som ikke kan finde kvalificeret ansættelse.

Den nærmeste fremtid skulle gerne bringe en enorm omvæltning, hvor hverken COBOL, C#, Java, SOAP, XML, RUP, etc. er de dominerende termer indenfor seriøse brugervendte løsninger. Hvor Apache og IIS forsvinder fra markedet, og NGINX og lignende 10k webservere bliver betragtet som de sløve men bredt accepterede. En fremtid, hvor man arbejder med den anvendte teknologi frem for imod den, dvs. man ikke benytter PDF og Word dokumenter som web kommunikationsmedie. En verden, hvor der står Gb på datatransmissionshastighederne og ikke Mb.

Betragter jeg så mig selv som ekspert? Nej, jeg vil hellere forvanske den engelske talemåde ’Jack of all trades, master of none’ til ’Jack of many trades, master of some’ og så evigt lærende. Men jeg ved, at i nogle lægmænds øjne betragtes jeg som ekspert i IT. Det fortæller mig blot, at vi stiller store krav til resten af befolkningen, når vi siger, at de alle skal være web kyndige i morgen.

Til trods for det, så går jeg ud fra, at jeg stadig er anvendelig i it-branchen, hvor mine styrker kan anvendes sammen med andres til at lave noget større, end vi havde formået alene.


Erfaringer fra statslige IT-projekter – hvordan gør man det bedre? (03 2001). Hentede 31. 05 2013 fra tekno:

Bonnerup-rapportens ophavsmænd 10 år efter: Ingen er blevet klogere. (08. 12 2011). Hentede 31. 05 2013 fra Version2:

Why Gladwell’s 10,000-hour rule is wrong.(14. 11 2012). Hentede 31. 05 2013 fra BBC Future:

Beretning til Statsrevisorerne om politiets it-system POLSAG. (03 2013). Hentede 31. 05 2013 fra rigsrevisionen:

IT-Branchens Pressemeddelelser. (23. 05 2013). Hentede 31. 05 2013 fra IT-Branchen:

Ten IT-enabled business trends for the decade ahead. (05 2013). Hentede 31. 05 2013 fra McKinsey & Company:

Antonio, V. (2009). Expert Level – The 10,000 Hour Rule. Hentede 31. 05 2013 fra Victor Antonio:

Bohr, N. (u.d.). Hentede 31. 05 2013 fra

Ekspert. (u.d.). Hentede 31. 05 2013 fra Wikipedia:

Expert Contrasts and comparisons. (u.d.). Hentede 31. 05 2013 fra Wikipedia:

Gladwell, M. (u.d.). The 10,000 Hour Rule. Hentede 31. 05 2013 fra

It-branchen i tal. (u.d.). Hentede 31. 05 2013 fra

Labor Force European Union. (u.d.). Hentede 31. 05 2013 fra WolframAlfa:

Lov om digital post . (u.d.). Hentede 31. 05 2013 fra

RASA11: Beskæftigede (arbejdssted) efter område, branche (DB07), socio-økonomisk status, herkomst, alder og køn . (u.d.). Hentede 31. 05 2013 fra

Top 10 Strategic Technology Trends for 2013. (u.d.). Hentede 31. 05 2013 fra Gartner:

Wellington, A. M. (u.d.). Arthur Mellen Wellington. Hentede 31. 05 2013 fra Poem hunter:

Relaunch of my stagnant website

lørdag, januar 22nd, 2011

So it has been quite a while since last I touched my website. I’ve now migrated to WordPress, and will most likely start blogging about everything and nothing – primarily in English.

My interests beside food and cake mostly revolves around what’s possible with a computer – luckily that’s just about everything. Yet my main interest – in a jumbled order – are:

  • Games
  • Programming
  • Design – of programs, games, user interfaces
  • Data – large amounts of data
  • Visualization
  • Mathematics
  • Statistics
  • Java, Scala, Groovy – at some point I’ll probably go back to play with Haskell
  • Android
  • Books