Dec 122010
 

Facebook privacySinds kort gebruik ik Facebook. Hoewel ik niet erg achterdochtig ben, ben ik wel op mijn privacy gesteld. Op het privacybeleid van Facebook is veel kritiek geweest. Eerder dit jaar heeft Facebook dan ook een nieuw privacypaneel ingevoerd. Hiermee is het gemakkelijker geworden om in te stellen welke gegevens je wilt delen en met wie.

Mijn filosofie is heel simpel: ik deel alles, maar alleen met vrienden. Want alleen op deze manier kan ik zelf bepalen wie mijn Facebook-informatie en -berichten kunnen zien. Ik weet namelijk niet wie allemaal vrienden van vrienden zijn. Als ik gegevens wil delen met een vriend van een vriend, is deze persoon eigenlijk een vriend en wordt het dus tijd voor een uitnodiging. Met puur zakelijke contacten maak ik overigens alleen een verbinding via LinkedIn.

De standaardinstellingen blijken niet naar mijn wens te zijn. Na het toepassen van het profiel ‘Vrienden‘ via Account > Privacyinstellingen > Je standaardprivacy bepalen blijken er toch nog een paar bedenkelijke, enigszins verborgen instellingen te zijn:

  • Account > Privacyinstellingen > Instellingen voor maken van contact > Instellingen bewerken: de eerste twee iedereen en de rest alleen vrienden
  • Account > Privacyinstellingen > Instellingen voor taggen  > Instellingen bewerken: 2x aan, vrienden, 2x uit
  • Account > Privacyinstellingen > Toepassingen en websites > Instellingen bewerken > Toepassingen die je gebruikt: Uit
  • Account > Privacyinstellingen > Toepassingen en websites > Instellingen bewerken > Hoe personen je gegevens toevoegen aan toepassingen die ze gebruiken: Alles uit
  • Account > Accountinstellingen > Facebook Ads (links) > Advertenties van derden > Instellingen … bewerken: Niemand
  • Account > Accountinstellingen > Facebook Ads (links) > Advertenties en vrienden > Instellingen … bewerken: Niemand
  • Account > [Klik op je naam] > Profiel bewerken > Algemene gegevens: Mijn geboortedatum niet in mijn profiel weergeven
  • Account > [Klik op je naam] > Profiel bewerken > Contactgegevens > [Klik op de poppetjes]: Alleen ik

Met deze instellingen bescherm ik ook de privacy van mijn vrienden, omdat hun informatie niet meer via mij voor anderen zichtbaar is en gebruikt kan worden voor advertenties.

Mijn Facebook profiel bevat alleen de hoogst noodzakelijk informatie, want goede vrienden zijn wel op de hoogte van bijvoorbeeld mijn burgerlijke staat.

Als je een andere mening hebt over deze zaak of nog andere relevante instellingen hebt gevonden, dan hoor ik dat graag! Het liefst via een bericht hieronder.

Update: lees ook de aanbevelingen van Sophos

Dec 082010
 

CSipSimpleAl een poosje gebruik ik naar tevredenheid CSipSimple op mijn Android-telefoon. Met deze gebruikersvriendelijke applicatie is het mogelijk om VoIP-gesprekken te voeren via Wi-Fi, GPRS en 3G (de laatste twee alleen als je provider dat toelaat).

Ik gebruik deze applicatie regelmatig in het buitenland om via open draadloos netwerken goedkoop naar Nederland te bellen. Ik gebruik daarvoor dezelfde VoIP-provider die ik thuis gebruik; op dit moment Poivy, één van de Betamax-klonen (prijsvergelijking). Als ik nog voldoende Freedays heb, wat meestal het geval is, bel ik zelfs gratis. Ik gebruik liever geen Skype, omdat ik de voorkeur geef aan open source software.

Een groot voordeel van CSipSimple is de uitstekende integratie met de ingebouwde applicaties. Als je dat wilt, kun je bij elk gesprek kiezen of je via VoIP wilt bellen of niet. Ook is het mogelijk om ervoor te kiezen de via VoIP gevoerde gesprekken in de standaard gesprekkenlijst op te laten nemen. Prettig is verder dat de applicatie zeer actief wordt ontwikkeld en ondersteund.

Vandaag is versie 0.00-16-00 uitgekomen. De belangrijkste toevoeging voor mij is de G.729-codec (issue 8). Na het aanzetten van deze codec wordt het mogelijk om zelfs bij een lage bandbreedte (< 32 Kbps, dus haast niets) gesprekken van goede kwaliteit te voeren. De meeste providers ondersteunen deze codec naast de gebruikelijke G.711-codec (in ieder geval de Betamax-klonen en BudgetPhone). Om ervoor te zorgen dat de G.729-codec gekozen wordt als deze beschikbaar is, heb ik deze bovenaan in de lijst met codecs gezet.

Voor het instellen van een Betamax-kloon (gegevens Poivy) kan de basic wizard worden gebruikt, maar voor een betrouwbaar resultaat en om dit probleem te vermijden, is het nodig om het transport naar UDP te forceren in de expert wizard (de wizard kan gekozen worden door lang te drukken op een account). Verder is het verstandig om een STUN-server in te stellen om de kans zo groot mogelijk te maken dat firewalls niet in de weg zitten. Ik gebruik daarvoor stun.ekiga.net. Om onderbrekingen in het geluid te voorkomen, heb ik ook nog de clock rate op 8 KHz gezet (afhankelijk van de versie is dit nu standaard).

CSipSimple barcode

Let op: De meeste VoIP-applicaties werken op een Sony Ericsson X10 mini met Android 1.6 niet goed.

Tip: ik gebruik altijd de Android applicatie van Speedtest.net om te kijken of de verbinding snel genoeg is.

Update: omdat ik wat wilde bijdragen, heb ik CSipSimple in het Nederlands vertaald.

How to host a static website on Google AppEngine

 Computers and internet  Comments Off on How to host a static website on Google AppEngine
Oct 262010
 

Here is in short how you can host a static website on

  1. Sign up and create an application on your dashboard
  2. Create a local folder and put the two files below and your static files (.html, .css, .jpg, etc) into it
  3. Change ‘your-app-id‘ of app.yaml into the id of the application you have created in step 1
  4. Upload the application
  5. Connect your domain name to the application (optional)
    • Use WWWizer to redirect your naked domain

app.yaml

application: your-app-id
version: 1
runtime: python
api_version: 1

handlers:
- url: /.*
  script: main.py

main.py

import os
import string
import logging
import mimetypes
from google.appengine.ext import webapp
from google.appengine.ext.webapp.util import run_wsgi_app
from google.appengine.dist import use_library
 
use_library('django', '0.96')
 
class Page(webapp.RequestHandler):
	def get(self, path):
		logging.info(os.environ['REMOTE_ADDR'] + ' GET ' + path)
		filename = self.getFileName()
		if os.path.exists(filename):
			ext = string.lower(os.path.splitext(filename)[1])
			if ext == '.ico':
				mimetype = 'image/ico'
			else:
				try:
					mimetype = mimetypes.types_map[ext]
				except KeyError:
					mimetype = 'application/octet-stream'
			self.response.headers['Content-Type'] = mimetype
			self.response.out.write(open(filename, 'rb').read())
		else:
			self.error(404)
			self.response.out.write('Not found')
 
	def getFileName(self):
		page = self.request.path[1:]
		if page == '':
			page = 'index'
		if '.' in page:
			suffix = ''
		else:
			suffix = '.html'
		return os.path.join(os.path.dirname(__file__), page + suffix)
 
application = webapp.WSGIApplication([(r'/(.*)', Page)], debug=False)
 
def main():
	run_wsgi_app(application)
 
if __name__ == '__main__':
	main()

If you want to host more than one website with the same application, you could replace the last line of the ‘getFileName‘ function with the following and put the static files of each website in a sub-folder with the name of the domain (for example ./www.example.org/).

		domain = os.environ['SERVER_NAME']
		path = os.path.join(os.path.dirname(__file__), domain)
		return os.path.join(path, page + suffix)
Aug 242010
 

If you have been traveling to developing countries, like India, you may have experienced that using WordPress on slow connections and/or slow computers can be an exercise in patience. To solve this problem I wrote another new WordPress plugin “Light Post” that allows you to publish and edit posts a lot quicker in such circumstances. The price is that you can only edit HTML and that you only have a basic set of features available, like choosing the title, category and tags. Availability of JavaScript and Flash is not required, but when JavaScript is enabled you can upload and insert images. To prevent loading of the chunky WordPress administration panel, the plugin redirects the browser directly after logging in to an alternate post management screen outside the normal WordPress environment (this can be turned off with a setting). Just one click brings you back to the normal WordPress rich edit screen and visa versa (look in the ‘Publish’ meta box for a link).

Install now

 Posted by at 14:06  Tagged with:
Jul 292010
 

For a while I have been searching for a WordPress plugin that could display at least the Google PageRank for a configurable list of sites in a dashboard widget. A requirement was that no third party site should be referenced to get the rankings. I couldn’t find one, so I wrote one myself.

The List Rank Dashboard Widget can display currently:

By default the Google PageRank, Alexa Rank and number of Delicious Posts are displayed for the current site, but more sites can be added using the settings. After entering a Google API Key and a Yahoo! Application ID (both free) the number of Google and Yahoo! Backlinks can be displayed too.

Included is a shortcode to display rankings in post, pages and sidebar widgets (see the Faq for usage instructions).

If you like to see more rankings, please leave a comment, but don’t ask me to add rankings, such as the Technorati Authority, which requires parsing an HTML response. Sooner or later this will break, when the design of the site is being changed.

Install now

 Posted by at 21:40  Tagged with: