Monday, February 20, 2012

How to remove Firefox's "This address is restricted", commonly triggered by trying to access port 87

Here is a quick guide on how to remove Firefox's error message when trying to access resources on restricted ports, such as port 87:
This address is restricted

This address uses a network port which is normally used for purposes other than Web browsing. Firefox has canceled the request for your protection.



1 Open Firefox's settings: about:config

Open Firefox's preferences by typing the following URL in Firefox:

about:config







2 Find the settings network.security.ports.banned.override

In the Filter box, type in network.security.ports.banned.override



3 Create if not found

If you can't find such a preference, right click to open up the pop-up menu and pick New and then String.



As preference name type network.security.ports.banned.override and 87 as the value.



Afterwards it should look something like this:



4 Modify if exists, and how to add multiple ports

If such a preference already exists, you can specify multiple ports. Either as a range such as 1-1024 or even combine with a comma separated list such as 87, 150-300, 350, 400, 450-500.

5 Refresh the page

Just refresh the page and you should have no problems accessing the resource.

Thursday, February 9, 2012

Introducing OSBCP CSS Squasher - YUI CSS Compressor gone clever?

As a web developer, I like to minify stuff left and right (for all the obvious reasons) and minifying CSS is not an exception.

There are tons of minifier tools out there, but since I am a Java developer by heart, I usually use the YUI CSS Compressor. It's a great and efficient minifier, but I have found one flaw.

The flaw of YUI Compressor

To dive right in, here is an example. Lets say this is my CSS:

image {
    border: none;
}

image {
    border: none;
}

image {
    border: none;
}

image {
    border: none;
}

If I would run this through the compressor I would get the following output:

image{border:0}image{border:0}image{border:0}image{border:0}


However, wouldn't having a single "image{border:0}" be enough?

Or if the CSS was:
image {
    border: none;
}

no-border {
    border: none;
}

table {
    border: none;
}
The output would be:
image{border:0}no-border{border:0}table{border:0}

Buy why not "image,no-border,table{border:0}"? It is actually 19 characters less and would have the same results.

I think you get my point by now. Even though the YUI CSS Compressor is crude and efficient, it's not designed to minify your CSS by analyzing and re-organizing it. However, a tool that could do just that would be cool, wouldn't?

My personal solution: OSBCP CSS Squasher

So my solution to this situation was to actually write my own minifier; OSBCP CSS Squasher. A minifier that reads and parses my CSS then merges, squashes and refactors the CSS to decrease the length.

It converts CSS like this:
a {
    width: 100px;
    color: red;
}

b {
    width: 100px;
    color: red;
}

c {
    color red;
}

d, e {
    margin: 10px;
}

e, d {
    padding: 10px;
}
To this:
a, b {
    width: 100px;
}

a, b, c {
    color: red;
}

d, e {
    margin: 10px;
    padding: 10px;
}
Then it uses the YUI CSS Compressor to turn it all into this:

a,b{width:100px}a,b,c{color:red}d,e{margin:10px;padding:10px}
That's about it!

Comparison numbers

Here are some fancy numbers compared to just using the YUI CSS Compressor.



The down-side: It breaks CSS inheritance

However, this minifier is far from being silver bullet. The biggest and obvious flaw of this tool is that it rearranges your CSS, possibly breaking your CSS inheritance. Even though I don't use CSS inheritance, and actually try and avoid it due to its downsides, it is something the developer should know before using tools like this.

Online tool

For demonstration purposes, I have created an online tool:

http://osbcp-css-squasher-demo.appspot.com/


Feel free to use and share your comments

The tool is fully open sourced and is free to download from the project's Github page:

https://github.com/corgrath/osbcp-css-squasher

Please also feel free to share your comments and suggestions!

Wednesday, February 1, 2012

Hur man bokför en Android app försäljning via Android Market och Google Checkout

Please note that this whole blog entry is in Swedish.

Efter mycket om och men från Skatteverket angående dubbelmoms vid försäljningen av mobila applikationer, enda sedan Stardoll hysterin, tyckte jag det var dags att kontakta Skatteverket för att själv förstå vad som gäller, men framför allt, att lära mig hur jag ska på ett korrekt sätt deklarera en Android app försäljning.

Så jag emailade Skatteverket med ett riktigt exempel och frågade dom helt enkelt; "Hur bokför jag detta?". Dagen efter fick jag ett svar från Skatteverket som beskriv exakt hur jag skulle gå tillväga. Detta tänkte jag nu dela med andra svenska app utvecklare, som kanske var lika förvirrade som jag!

Notera dock att jag är ingen ekonom, utan är bara en vanlig person med en enskild firma som vill bokföra min försäljning. Allting jag skriver här en min egen tolkning av vad Skatteverket skrev till mig. Ni kan själv läsa emailet (längst ned på sidan) och göra era egna tolkning. Om ni tycker det jag har tolkat eller gjort något fel, hör gärna av er! :-)

Uppdatering 2012-02-05: För dom som vill läsa ännu mer finns det numera en tråd på Swedroid rörande detta inlägg, med massa intressanta kommentarer från deras användare.

Min 10 kronors app!

Innan jag gjorde själva försäljningen, gjorde jag två viktiga saker.

1) I mitt Google Checkout konto (som krävs då man ska sälja Android applikationer via Android Market), valde jag att jag skulle inte lägga på moms i mina försäljningar, utan det var något jag ville reglera själv (och inte Google Checkout) vid ett senare tillfälle.



2) Via Android Market laddade jag upp min applikation och valde att det skulle kosta 10 SEK. Ett bra pris som skulle göra eventuellt några prisberäkningar enkelt, tyckte jag.




Själva försäljningen: Någon köpte min app!

Senare var det någon som köpte mitt program. I min Google Checkout kunde jag se själva ordern:



Som man ser i bilden, fick köparen betala 10 SEK (0 SEK moms) och Google tar omedelbart sina 30% (nämligen 3 SEK), vilket återlämnar i 7 SEK som intäkt. Vid slutet av månaden fick jag dessa 7 SEK till företagets bankkonto. Inga problem.

Att bokföra försäljningen med papper och penna

Nu kommer det knepiga biten; hur bokför jag egentligen detta på ett korrekt sätt? (Teorin under bygger på Skatteverkets svar.)

Eftersom köparen var inom Europa, är jag tvungen att betala 25% moms av min försäljning. Detta betyder att av mina 10 SEK, så är 2 SEK (25% av 10 SEK) moms och de resterande (10-2=8) 8 SEK är själva intäkten.

Om jag köparen hade varit utanför Europa, skulle jag inte vara tvungen att betala momsen, utan de 10 SEK skulle vara intäkten direkt.

Om jag hade nu gjorde 10000 försäljningar, så skulle jag nog faktiskt ha tillsatt moms på, bara för att slippa huvudvärken att särskilja vilka ordrar gjordes inom och utanför Europa. Men detta är en personlig kommentar :-)

Då Google tar sina 30%, är detta en betalning för en förmedlad tjänst mellan två Europeiska företag. Vilket betyder att de 3 SEK Google tog, så är 25% av dessa (det vill säga 0.75 SEK) momsen.

Det var det hela!

Bokföringen enligt blanketterna

Uppdatering 2012-02-12: Enligt ett inlägg i Swedroids forum, så accepterar inte Skatteverket användning av ören utan avrundar allt till hela kronor. Det vill säga då du faktiskt ska skicka in de slutgiltiga siffrorna, så avrunda siffrorna. I detta exempel blir då 0.75 SEK avrundat till 1 SEK.


Om man gör alla dessa stegen via Momsbilagan, blir det då:

Ruta 05 (momspliktig försäljning): 8 SEK, ruta 10 (utgående 25% moms): 2 SEK, ruta 21 (inköp av tjänster inom eu): 3 SEK och till sist ruta 30 (utgående 25% moms på inköp): 0.75 SEK.

Därefter summeras rutorna 30 (25%), 31 (12%) och 32  (6%) vilket resulterar i att ruta 33 (Summa) får 0.75 SEK, som sedan flyttas över till ruta 13.

Sedan så summeras rutorna 10 (25%), 11 (12%), och 12 (6%) med ruta 13 (som ovan fick 0.75 SEK) och resultatet hamnar på ruta 34 (summa åtgående moms): 2.75 SEK.




























Som sedan flyttas över till min Inkomstdeklaration (som jag får hem) till rutorna 109 och 110.

















Vilket resulterar i att jag ger Skatteverket 2.75 SEK. 

- Klart!

Om du deklarerar oftare en en gång per år, ska ruta 48 få 0.75 SEK och ruta 49 få 2 SEK.

Om köparen var utanför Europa, så skulle ruta 40 (försäljning utanför Sverige) få 10 SEK, ruta 21 (inköp av tjänster inom eu): 3 SEK och sista rutan 30 (utgående 25% moms på inköp): 0.75 SEK - Det vill säga att man inte betalar in något till Skatteverket.

Om du är osäker på alla dessa siffror och rutor, så skrolla längst ned till emailet från Skatteverket.

Bokföringen i Visma Enskild Firma


Men eftersom jag använder mig av Visma Enskild Firma, så ser det ut så här.


Inbetalningen:





Utbetalningen:





Översikten:





Emailet från Skatteverket

Lustigt nog råkade Skatteverket lägga in en länk till deras intranät, men enligt en Google sökning misstänker jag att artikeln dom refererar till dessa artiklar:

2012-01-31:
Hej Christoffer


När det gäller försäljningar av applikationer är utgångspunkten den att det är du som anses sälja applikationen till kund och att Google enbart gör en förmedlingstjänst åt dig. Se Skatteverkets ställningstagande Svenska näringsidkares försäljning av applikationer (11-06-16) .


Detta innebär att om köparen är från Sverige eller annat EU-land ska det vara svensk moms på fakturan (i ditt fall blir alltså försäljningspriset 8 kronor och momsen blir 2 kronor). Är däremot köparen från ett land utanför EU ska det inte vara någon svensk moms på fakturan. Säljer du då appen för 10 kronor blir alltså din intäkt 10 kronor.


Tar Google 3 kronor i avgift av dig är detta en betalning för en förmedlingstjänst och eftersom det rör sig om en omsättning mellan två näringsidkare i EU anses denna tjänst omsatt i Sverige (5 kap 5 § ML). Detta gör att du ska redovisa omsättningen i din momsdeklaration. Du för upp summan (3 kr) i ruta 21, räknar ut 25 % moms och skriver in denna summa i ruta 30, och slutligen drar du av samma summa i ruta 48.


Din totala momsredovisning för en försäljning blir (vid försäljning till privatperson inom EU eller Sveríge): 8 kr i ruta 05, 2 kr i ruta 10, 3 kr i ruta 21, 1 kr (jag har avrundat) i ruta 30, 1 krona i ruta 48 och 2 kronor i ruta 49. Du betalar in 2 kronor till Skatteverket. Är köparen från ett land utanför EU blir det istället 10 kronor i ruta 40, 3 kr i ruta 21, 1 kr i ruta 30 samt 1 kr i ruta 48. Du betalar inte in något till Skatteverket.


Deklarerar du momsen en gång per år så är det en bilaga till inkomstdeklarationen, precis som du skriver, men då finns inte rutorna 48,49. Dessa finns bara i momsdeklarationen som lämnas varje eller var tredje månad. Du för istället in summan av utgående moms från denna bilaga, ruta 34, till den gröna delen av din inkomstdeklaration. Där hamnar momsen i rutorna 109 och 110.