Author Archive

Autofocus now playing track in Songbird

Tuesday, 13 January 2009

Zowel in windows als in linux gebruik ik songbird om naar ‘m collectie muziekhoudende bestanden te luisteren. Als je jarenlang (nuja, toch minstens 2) iTunes gebruikt hebt is het rotweg vervelend wanneer Songbird je niet automatisch het liedje waarnaar je aan ’t luisteren bent selecteert, zodat je dus door heel je lijst kan gaan scrollen. Maar songbird zou songbird niet zijn moest daar niet onmiddelijk een oplossing voor gevonden worden.
Bent u ook wanhopig op zoek? Alsjeblieft: http://addons.songbirdnest.com/addon/1315

Bij mij werkte het zowel in windows (xp) als in linux (ubuntu 8.10).
Veel luisterplezier!


KMess: klikbare links met het juiste programma openen

Friday, 16 January 2009

Het líjkt vanzelfsprekend. Je klikt op een link in een chatvenster en  hopla! de link opent in je browser en brengt je zo, zonder extra muisklikken, naar de juiste website, afbeelding of wat dan ook….

Totdat…. je chatprogramma alles doet behálve het juiste programma gebruiken… en een link naar youtube achtereenvolgens opent in zowat alle programma’s die op je pc te vinden zijn, maar net dat ene programma (een browser, firefox bv) niet. Frustrerend!

Blijkt dat KMess voor kde geschreven is… wat die k eigenlijk al deed vermoeden. En de browser in kde is nu niet dezelfde als die in gnome (waar ubuntu mee werkt).
Probleem dus. Of toch niet?
Er is een faq op de website van KMess.. en jawel hoor… mét een antwoord.

Ga naar ~/.kde/share/config/kdeglobals en voeg daaraan het volgende toe:

[General]
BrowserApplication=firefox

Als de [General] sectie nog niet bestaat, zul je het zelf moeten toevoegen.

Zo zie je maar, hoe simpele dingetjes soms voor enorme frustraties kunnen zorgen…. 😉


Eigen sneltoetsen in OpenOffice aanmaken.

Wednesday, 4 March 2009

Dinsdagavond, wat later op de avond (en toevallig ook m’n verjaardag).
Zij: Scha-aat? Dienen OpenOffice is niet leuk?
– Waarom niet?
Zij: Ik kan nergens sneltoetsen aanmaken…
– Oh, maar dat moet vast wel kunnen hoor

Stiekem wist ik totaal niet of het ging en als het al ging hoe…
Maar een klein beetje google-werk leverde interessante resultaten op.

Eén daarvan was extreem bruikbaar: Namelijk deze. (werkt ook in windows hoor)
Na stap-voor-stap alles uitgeprobeerd te hebben bleek alles verrassend genoeg te werken, maar er was nog een groot probleempje…
Hoe leg ik dit op een snelle manier uit? Het antwoord was snel duidelijk. Niet.
Is er dan een andere manier, en zo ja welke?
Alweer op google en ja hoor! Je kon je sneltoetsen exporteren.
Zo gezegd zo gedaan.
Alleen kreeg vriendin-lief een error voor haar neus gesmeten.
Logisch… want ik had de sneltoetsen doorgestuurd, maar niet de macro die de sneltoets zou moeten oproepen.

Kunnen macro’s ook ge-exporteerd worden? Ja! En zelfs zeer gemakkelijk.
Na het doorsturen van de geëxporteerde macro moest er enkel gedubbelklikt worden op het bestandje en de rest gebeurde vanzelf.

En ja hoor! Alles werkte zoals zou moeten…
Ik geef het toe, het is alles behalve simpel, maar… het gaat!



Sneltoetsen in OpenOffice.org (bis)

Tuesday, 10 March 2009

Ondertussen zijn er al een paar snelkoppelingen bijgekomen.
Genoeg om ze te delen met de rest van de wereld.
Ook heb ik ontdekt dat er extensie’s bestaan voor OpenOffice.org en daar zelfs eentje bij zit waarmee je sneltoetsen kan aanmaken. (wel, wel…)

Maar als je liever gebruik maakt van een voorgefabriceerde file dan kun je deze downloaden hieronder.

Installeren doe je als volgt:
Download eerst beide bestanden onderaan.

Start OpenOffice.org op en (in Writer bijvoorbeeld) selecteer je uit de menubar:

  • Tools > Customize > Load
  • Selecteer de file “snelkoppelingen”  (diegene zonder oxt)
  • klik op openen
  • klik op ok

Dan dubbelklik je op “snelkoppelingen_oxt.oxt”
Je zou nu een installatievenster moeten krijgen.
Klik daar op ok.

Proficiat, u heeft nu volgende sneltoetsen:

ctrl + h: ♥
ctrl + s: ♠
ctrl + p: →
ctrl + g: ≠

Downloads:

snelkoppelingen
snelkoppelingen_oxt


Drupal views: upcoming events per Organic Group

Saturday, 14 March 2009

Je wilt de komende evenementen van een bepaalde groep in een blok tonen op je Drupal website?
En je hebt al uren liggen knoeien met de instellingen?
Probleem opgelost! Importeer volgende code bij je views et voila…
Vergeet zeker je views cache niet te legen wanneer het “now” keyword niet wil werken 😉

$view = new view;
$view->name = 'og_event';
$view->description = 'Volgende keer block';
$view->tag = 'volgende keer';
$view->view_php = '';
$view->base_table = 'node';
$view->is_cacheable = FALSE;
$view->api_version = 2;
$view->disabled = FALSE; /* Edit this to true to make a default view disabled initially */
$handler = $view->new_display('default', 'Defaults', 'default');
$handler->override_option('fields', array(
'field_datum_value' => array(
'label' => '',
'alter' => array(
'alter_text' => 0,
'text' => '',
'make_link' => 0,
'path' => '',
'alt' => '',
'prefix' => '',
'suffix' => '',
'help' => '',
'trim' => 0,
'max_length' => '',
'word_boundary' => 1,
'ellipsis' => 1,
'html' => 0,
),
'link_to_node' => 0,
'label_type' => 'none',
'format' => 'default',
'multiple' => array(
'multiple_number' => '',
'multiple_from' => '',
'multiple_to' => '',
'group' => TRUE,
),
'repeat' => array(
'show_repeat_rule' => '',
),
'fromto' => array(
'fromto' => 'value',
),
'exclude' => 0,
'id' => 'field_datum_value',
'table' => 'node_data_field_datum',
'field' => 'field_datum_value',
'override' => array(
'button' => 'Override',
),
'relationship' => 'none',
),
'title' => array(
'label' => '',
'alter' => array(
'alter_text' => 0,
'text' => '',
'make_link' => 1,
'path' => '',
'alt' => '',
'prefix' => '',
'suffix' => '',
'help' => '',
'trim' => 0,
'max_length' => '',
'word_boundary' => 1,
'ellipsis' => 1,
'html' => 0,
),
'link_to_node' => 1,
'exclude' => 0,
'id' => 'title',
'table' => 'node',
'field' => 'title',
'relationship' => 'none',
'override' => array(
'button' => 'Override',
),
),
));
$handler->override_option('sorts', array(
'field_datum_value' => array(
'id' => 'field_datum_value',
'table' => 'node_data_field_datum',
'field' => 'field_datum_value',
),
));
$handler->override_option('arguments', array(
'group_nid' => array(
'id' => 'group_nid',
'table' => 'og_ancestry',
'field' => 'group_nid',
),
'date_argument' => array(
'default_action' => 'ignore',
'style_plugin' => 'default_summary',
'style_options' => array(),
'wildcard' => 'all',
'wildcard_substitution' => 'Alle',
'title' => '',
'default_argument_type' => 'date',
'default_argument' => '',
'validate_type' => 'none',
'validate_fail' => 'not found',
'date_fields' => array(
'node_data_field_datum.field_datum_value' => 'node_data_field_datum.field_datum_value',
'node_data_field_toeterdate.field_toeterdate_value' => 'node_data_field_toeterdate.field_toeterdate_value',
),
'year_range' => '-3:+3',
'date_method' => 'OR',
'granularity' => 'month',
'id' => 'date_argument',
'table' => 'node',
'field' => 'date_argument',
'override' => array(
'button' => 'Override',
),
'relationship' => 'none',
'default_options_div_prefix' => '',
'default_argument_user' => 0,
'default_argument_fixed' => '',
'default_argument_php' => '',
'validate_argument_node_type' => array(
'poll' => 0,
'faq' => 0,
'event' => 0,
'event2' => 0,
'event3' => 0,
'group' => 0,
'page' => 0,
'startpagina' => 0,
'story' => 0,
),
'validate_argument_node_access' => 0,
'validate_argument_nid_type' => 'nid',
'user_argument_type' => '',
'restrict_user_roles' => 0,
'user_roles' => array(),
'validate_argument_is_member' => 0,
'validate_argument_php' => '',
),
));
$handler->override_option('access', array(
'type' => 'none',
));
$handler->override_option('title', 'Volgende keer');
$handler->override_option('footer', '<br />');
$handler->override_option('footer_format', '2');
$handler->override_option('footer_empty', 0);
$handler->override_option('empty', 'Geen vergaderingen gevonden.');
$handler->override_option('empty_format', '2');
$handler->override_option('items_per_page', 1);
$handler->override_option('use_more', 1);
$handler = $view->new_display('block', 'Blok', 'block_1');
$handler->override_option('filters', array(
'picg' => array(
'operator' => '=',
'value' => '',
'group' => '0',
'exposed' => FALSE,
'expose' => array(
'operator' => FALSE,
'label' => '',
),
'id' => 'picg',
'table' => 'og_ancestry',
'field' => 'picg',
'override' => array(
'button' => 'Use default',
),
'relationship' => 'none',
),
'date_filter' => array(
'operator' => '>=',
'value' => array(
'value' => '2009-03-14 00:00:00',
'min' => NULL,
'max' => NULL,
'default_date' => 'now',
'default_to_date' => '',
),
'group' => '0',
'exposed' => FALSE,
'expose' => array(
'operator' => FALSE,
'label' => '',
),
'date_fields' => array(
'node_data_field_datum.field_datum_value' => 'node_data_field_datum.field_datum_value',
),
'date_method' => 'OR',
'granularity' => 'day',
'form_type' => 'date_select',
'default_date' => 'now',
'default_to_date' => '',
'year_range' => '-3:+3',
'id' => 'date_filter',
'table' => 'node',
'field' => 'date_filter',
'override' => array(
'button' => 'Use default',
),
'relationship' => 'none',
),
));
$handler->override_option('block_description', '');
$handler->override_option('block_caching', -1);

Formule’s in OpenOffice

Thursday, 26 March 2009

Eigenlijk is deze post vooral voor mezelf, zodat ik niet meer lang hoef te zoeken hoe je formule’s in OpenOffice invoegt.

In een gewoon writer bestand open je insert > object > Formula
Je typt dan bijvoorbeeld sqrt{125} en klikt terug op je document en je hebt de vierkantswortel van 125 op je blad staan.
Tot zover geen enkel probleem.

Maar ingewikkeldere formule’s vergen af en toe stevig denkwerk.
Zo heb je bijvoorbeeld:

formule1

sqrt{ { sum from {16} to {i = 1} { {(d sub{i}bar d )}^2} } over { n-1 } }

  • sqrt{n} Geeft de vierkantswortel van n (eigenlijk alles wat tussen { en } staat )
  • sum {} Geeft het sommatieteken weer (zo’n rare m op z’n zijkant)
  • sum from {16} to {i = 1} Geeft het sommatieteken weer met bovenaan i = 1 en onderaan 16
  • {x}^n Geeft x tot de n-de weer. (12 kwadraat is {12}^2 )
  • {n} over {m} Geeft n/m weer (een breuk dus)

Nog meer voorbeeldjes:

bar d = {sum from{i=1} to{16 }d sub{i} } over n    formule2
{{d sub {i} * sqrt{n} } over S sub d} = sqrt{79,31 * 13 over 79,59}}     formule3


Ook dit is Linux

Tuesday, 31 March 2009

Een tijdje geleden had ik een blog-post geschreven over Linux . Er werkte al veel, maar nog niet alles.
Er is de laatste tijd veel veranderd en het is de moeite waard om dat met de wereld te delen.
Eerst en vooral heb ik een theme gevonden waarvan ik dacht: eindelijk!
De standaard layout van Ubuntu vind ik persoonlijk spuuglelijk en ik was dan ook blij verrast toen er een mooie grafische schil beschikbaar was.

Bureaublad

Verder is ook de Avant Window Navigator (Awn) volwassen geworden en beschikt nu over een aantal ongelooflijk handige applets zoals een kalender, mail-alert en een mini-weerbericht.

Avant Window Navigator (awn)

Mits het installeren van een paar Addons (Last track Resume, MMKeys, Song notifier, The Exorcist, FocusTrack) is Songbird een prima muziekspeler in Ubuntu en een waardig alternatief voor iTunes (vind ik).
Je kan Songbird zelfs met je iPod/iPhone besturen!

En last but not least: eindelijk word m’n webcam ondersteund! (Trust 15007)
Dankzij http://groups.google.com/group/microdia/web/testing-microdia-driver-draft

Webcam en Songbird werken probleemloos

Zodoende: Linux als primair os gebruiken: poging 2.


Een partitie permanent mounten in Ubuntu

Sunday, 12 April 2009

Ik heb op m’n laptop verschillende partities… één daarvan dient om afbeeldingen in op te slaan.
Alleen… als ubuntu opstart moet ik die handmatig mounten. (via Locaties > <Naam van de partitie> )

Niet echt lastig als je naar die map wilt gaan, je moet sowieso ergens op klikken om die te openen.
Jammer maar helaas sta ook m’n bureaubladachtergrond op die partitie en uiteraard… die werd niet geladen tijdens het opstarten.
Werd… want ondertussen is er een werkende oplossing die ik graag met u wil delen: (en stiekem ook voor mezelf het wat gemakkelijker te maken mocht ik ooit het zelfde probleem weer tegenkomen)

Wat je moet doen is:  (waarbij sda5 de partitie is die we permanent willen mounten)

sudo vol_id -u /dev/sda5

Kopieer het resultaat van dit commando en voeg de volgende lijn toe aan /etc/fstab

#/dev/sda5
UUID=<output_of_vol_id_command> /media/sda5  ntfs defaults,nls=utf8,umask=007,gid=46 0       1

En doe dan:

sudo mount -a

Voila, bij mij werkte het alvast 😉

(via: http://ubuntuforums.org/showthread.php?t=432659 )


Voor mezelf: Java

Wednesday, 15 April 2009

Main

In Eclipse heb je altijd een main nodig om je code te kunnen testen. Zoals bv. deze:

public class testKlasseStudent {
public static void main (String  args[ ]){
Student a = new Student("Jef Janssen", 1.83, 75);
a.toonAlles();
}
}

Arrays

Grootte van een Array

Geef het aantal elementen in een Array weer.

public int getAantal() {

return tabel.length;
}


Een DVD afspelen in Ubuntu (9.04 – Jaunty Jackalope)

Sunday, 10 May 2009

Mijn zus had voor haar communie de dvd gekregen van hsm3 (ze is er zowat verzot op).
Uiteraard wou ik die dvd zelf ook wel eens zien en stak dus met volle moed de dvd in m’n pc, ondertussen had ik m’n stoel al achteruit gelegd en was klaar voor 112 min filmplezier.

Maar Murphy zou Murphy niet zijn moest hij ook nu weer van zich laten horen. De ene foutmelding na de andere verscheen op m’n maagdelijk zwart scherm.  Allemaal berichten met als enige boodschat: “Hey, ik kan deze DVD niet afspelen”. Zwaar vloekend en een paar verwensingen later begon ik te zoeken naar het probleem en, nu we dan toch bezig zijn, een mogelijke oplossing. Gelukkig had ik in ’t verleden ook al zoiets voorgehad en zat Medibuntu nog in m’n lange termijn geheugen.

Na het installeren van VLC (intypen in je pakketmanager: Toepassingen > Installeren/verwijderen ) en de juiste codecs van Medibuntu (Vindt je hier) speelde de DVD probleemloos.
Akkoord, dit zijn geen actie’s die je van een gemiddelde pc-gebruiker kan en mag verwachten, maar dvd’s afspelen kan wel.
Misschien nog een puntje om in orde te brengen bij Ubuntu 😉

Ohja, en ondertussen zat ik wél achteruit in m’n zetel en heb ik uiteindelijk wel kunnen genieten van hsm3 😀


Oracle xe (her-)starten in Ubuntu

Monday, 11 May 2009

Het was spannend deze morgend. Oracle wilde maar niet starten en gaf (we zijn het al gewoon ondertussen) de ene foutmelding na de andere. 10 min voor de les begon was ik wanhopig op zoek naar wat er juist misgelopen was.
Uiteindelijk heb ik dat niet gevonden maar wat ik wél gevonden heb is hoe ik het moet oplossen.
De volgende keer als ik dit probleem heb, typ ik dus zonder twijfelen:

sudo /etc/init.d/oracle-xe restart

in de command line.



Tips voor OpenOffice.org

Friday, 5 June 2009

Ik kan een symbool (speciaal karakter) niet vinden
Belachelijk lang moeten zoeken naar een dubbel pijltje ( ↔ ) in openoffice.
Uiteindelijk bleek dat niet elk lettertype dit symbool ondersteunt.
(tijdelijk) Veranderen van lettertype kan dus helpen!

Ik wil een pagina-einde verwijderen
Je  selecteert het paginaeinde aan het begin van de (lege) pagina en drukt op BACKSPACE


Tips voor Ubuntu 9.04

Tuesday, 9 June 2009

Sneltoetsen in firefox 3

Thursday, 11 June 2009

Voor wie nóg sneller met Firefox wil werken, deze handige lijst met sneltoetsen:
http://www.zdnet.be/help/103567/sneltoetsen-in-firefox-3/


Tips voor Drupal

Saturday, 13 June 2009

Verschillende tekst voor ingelogde en niet ingelogde gebruikers

<?php 
if (user_is_logged_in()) {
	//message to logged-in user
} else {
	//message to anonymous user
}
?>

Het beste is niet altijd beter dan goed

Tuesday, 16 June 2009

Ik zat in bad en dacht na.
Goed – Beter – Best herinnerde ik mij nog uit het lager…
In die volgorde hadden wij het geleerd.  En best was wel degelijk de overtreffende trap van beter.
Maar wat als een beste oplossing niet goed is?
Stel: je hebt de keuze uit een slechte oplossing en een slechtere oplossing.
Dan is in dat geval de minst slechte oplossing de beste.
Maar dat wil nog niet zeggen dat die oplossing goed is, maar wel beter dan de slechtste…

Raar hé 😀


Drupal views: upcoming event block

Monday, 22 June 2009
$view = new view;
$view->name = 'og_event';
$view->description = 'Volgende keer block';
$view->tag = 'volgende keer';
$view->view_php = '';
$view->base_table = 'node';
$view->is_cacheable = FALSE;
$view->api_version = 2;
$view->disabled = FALSE; /* Edit this to true to make a default view disabled initially */
$handler = $view->new_display('default', 'Defaults', 'default');
$handler->override_option('fields', array(
'title' => array(
'label' => '',
'alter' => array(
'alter_text' => 0,
'text' => '',
'make_link' => 1,
'path' => '',
'alt' => '',
'prefix' => '',
'suffix' => '',
'help' => '',
'trim' => 0,
'max_length' => '',
'word_boundary' => 1,
'ellipsis' => 1,
'html' => 0,
),
'link_to_node' => 1,
'exclude' => 0,
'id' => 'title',
'table' => 'node',
'field' => 'title',
'relationship' => 'none',
'override' => array(
'button' => 'Override',
),
),
'field_datum_value' => array(
'id' => 'field_datum_value',
'table' => 'node_data_field_datum',
'field' => 'field_datum_value',
),
));
$handler->override_option('sorts', array(
'field_datum_value' => array(
'order' => 'ASC',
'delta' => -1,
'id' => 'field_datum_value',
'table' => 'node_data_field_datum',
'field' => 'field_datum_value',
'relationship' => 'none',
),
));
$handler->override_option('arguments', array(
'group_nid' => array(
'default_action' => 'default',
'style_plugin' => 'default_summary',
'style_options' => array(),
'wildcard' => 'all',
'wildcard_substitution' => 'Alle',
'title' => '',
'breadcrumb' => '',
'default_argument_type' => 'php',
'default_argument' => '',
'validate_type' => 'og_group_types',
'validate_fail' => 'not found',
'break_phrase' => 0,
'not' => 0,
'id' => 'group_nid',
'table' => 'og_ancestry',
'field' => 'group_nid',
'validate_user_argument_type' => 'uid',
'validate_user_roles' => array(
'2' => 0,
'5' => 0,
'3' => 0,
'4' => 0,
),
'relationship' => 'none',
'default_options_div_prefix' => '',
'default_argument_user' => 0,
'default_argument_fixed' => '',
'default_argument_php' => 'if ($node = og_get_group_context()) {
return $node->nid;
}
else {
return NULL;
}',
'validate_argument_node_type' => array(
'event2' => 'event2',
'poll' => 0,
'faq' => 0,
'event' => 0,
'group' => 0,
'page' => 0,
'startpagina' => 0,
'story' => 0,
'takpagina' => 0,
),
'validate_argument_node_access' => 0,
'validate_argument_nid_type' => 'nid',
'validate_user_restrict_roles' => 0,
'validate_argument_is_member' => 0,
'validate_argument_php' => '',
'override' => array(
'button' => 'Override',
),
),
));
$handler->override_option('filters', array(
'date_filter' => array(
'operator' => '=',
'value' => array(
'min' => NULL,
'max' => NULL,
'value' => NULL,
'default_date' => 'now',
'default_to_date' => '',
),
'group' => '0',
'exposed' => FALSE,
'expose' => array(
'operator' => FALSE,
'label' => '',
),
'date_fields' => array(
'node_data_field_datum.field_datum_value' => 'node_data_field_datum.field_datum_value',
),
'date_method' => 'OR',
'granularity' => 'day',
'form_type' => 'date_popup',
'default_date' => 'now',
'default_to_date' => '',
'year_range' => '-3:+3',
'id' => 'date_filter',
'table' => 'node',
'field' => 'date_filter',
'relationship' => 'none',
),
));
$handler->override_option('access', array(
'type' => 'none',
));
$handler->override_option('cache', array(
'type' => 'none',
));
$handler->override_option('header', '
<h2><img style="position: relative; top: 5px; height: 26px; width: 26px;" src="/files/toeter.gif" alt="toeter" /> Volgende keer</h2>
');
$handler->override_option('header_format', '2');
$handler->override_option('header_empty', 1);
$handler->override_option('footer', '
');
$handler->override_option('footer_format', '2');
$handler->override_option('footer_empty', 0);
$handler->override_option('empty', 'Geen vergaderingen gevonden.');
$handler->override_option('empty_format', '2');
$handler->override_option('items_per_page', 1);
$handler->override_option('use_more', 1);
$handler = $view->new_display('block', 'Blok', 'block_1');
$handler->override_option('filters', array(
'type' => array(
'operator' => 'in',
'value' => array(
'event2' => 'event2',
),
'group' => '0',
'exposed' => FALSE,
'expose' => array(
'operator' => FALSE,
'label' => '',
),
'id' => 'type',
'table' => 'node',
'field' => 'type',
'relationship' => 'none',
),
'date_filter' => array(
'operator' => '>=',
'value' => array(
'value' => NULL,
'min' => NULL,
'max' => NULL,
'default_date' => 'now',
'default_to_date' => '',
),
'group' => '0',
'exposed' => FALSE,
'expose' => array(
'operator' => FALSE,
'label' => '',
),
'date_fields' => array(
'node_data_field_datum.field_datum_value' => 'node_data_field_datum.field_datum_value',
),
'date_method' => 'OR',
'granularity' => 'day',
'form_type' => 'date_popup',
'default_date' => 'now',
'default_to_date' => '',
'year_range' => '-3:+3',
'id' => 'date_filter',
'table' => 'node',
'field' => 'date_filter',
'override' => array(
'button' => 'Use default',
),
'relationship' => 'none',
),
));
$handler->override_option('block_description', '');
$handler->override_option('block_caching', -1);

Belgische eID in Ubuntu gebruiken

Friday, 14 August 2009

Sinds kort heeft zowat elke Belg ze op zak zitten. Een kaartje zo groot als een bankkaart dat dienst doet als elektronische identiteitskaart. Je zou er zelfs mee kunnen inloggen op het studentenportaal van Vlaanderen om zo bijvoorbeeld je leerkrediet te kunnen raadplegen of op myMinFin.be om je belastingsaangifte digitaal door te sturen.
Het enige wat je daarvoor moet doen is een programma installeren, je browser instellen et voila, het zou moeten werken.
ZOU moeten werken, want op mijn computer deed het programma alles behalve wat het moest doen. Werken dus.

Na veel rondzoeken en nog meer uitproberen heb ik eindelijk een oplossing gevonden die voor mij (Ubuntu 9.04 / Firefox  3.5.2) werkt.
Het programma dat je terug kan vinden in de repositry’s werkte voor mij trouwens niet. Net als het programma dat je op de website van de Belgische eID zelf kan vinden.

Maar wat wel werkte is dit:

(bewerking van een mail van servicedesk@fedict.be)

De installatie van de eID software op Ubuntu 9.04 is het volgende:

(Indien je eerst de software al geinstalleerd hebt van elders: best eerst alle bestanden en dirs met *beid* en eid* en siscardplugins verwijderen in de mappen /usr/local/bin en /usr/local/lib
Anders krijg je foutmeldingen omdat er al een andere versie geïnstalleerd is.)

Open een terminal venster en voer de volgende commando’s uit:
cd /tmp
wget http://eid.belgium.be/nl/binaries/beid-middleware-3%2E5%2E2-opensuse-11%2E0-i686-5775_tcm147-59631.tgz
tar xvfz beid-middleware-3.5.2-opensuse-11.0-i686-5775_tcm147-59631.tgz
cd install
sudo ./install.sh

cd /tmp
wget http://frozenfox.freehostia.com/cappy/getlibs-all.deb
sudo dpkg -i getlibs-all.deb
sudo getlibs /usr/local/bin/beidgui

Dit loste voor mij dit probleem op:
beidgui: error while loading shared libraries: libxerces-c.so.27: cannot open shared object file: No such file or directory

Om op linux uw eID te kunnen gebruiken op Internet, wordt aangeraden om Firefox te gebruiken. Om Firefox met uw eID te kunnen gebruiken dient een PKCS#11-module te worden geïnstalleerd. Meer informatie over de installatie van deze module vindt u op http://eid.belgium.be/nl/Hoe_installeer_je_de_eID/Linux/

Aangezien de PKCS11-module voor eID enkel in een 32-bits versie beschikbaar is, dient u ook een 32-bits versie van Firefox te installeren. Hoe u dit kan doen op Ubuntu vindt u hier: https://help.ubuntu.com/community/AMD64/FirefoxAndPlugins#32-bit%20Firefox%20and%20plugins

Tip: als het niet lukt om een internetpagina te openen met de 32-bits versie van Firefox, doe dan het volgende:
1. Open Firefox
2. Typ in de adresbalk “about:config”
3. Zoek naar “network.dns.disableIPv6”
4. Zet de waarde op “true”
(Dit laatste had ik niet nodig. Het werkte zo met Firefox 3.5)

Bron: http://faunaflora.blogspot.com/2009/08/installatie-beid-kaartlezer-op-ubuntu.html



Games in Ubuntu (Linux)

Tuesday, 18 August 2009

Bestaan er dan geen spelletjes met goede graphics voor Linux?
Tuurlijk wel: http://dangerdeep.sourceforge.net/gallery.html

En ’t is nog gratis ook! 😉




Online afbeeldingen laden traag in Mac os X

Monday, 16 November 2009

Ik zat voor mijn computer en moest snel een afbeelding hebben.
Je klikt google open, typt je zoekterm in en klikt op “afbeeldingen”.
Het Google logo (ook een afbeelding) staat er onmiddelijk maar de blauwe kadertjes waar normaal de gezochte afbeeldingen in terecht komen blijven leeg.
Ik wacht een paar minuten… maar nog steeds is mijn scherm gevuld met lege kadertjes.

Misschien heeft Google een slechte dag?
Dus ik probeer afbeeldingen te zoeken met Yahoo en Bing maar ook daar krijg ik -op de logo’s na- geen afbeeldingen te zien.

Ligt het dan aan de browser?
Ik installeer Firefox en Opera maar ook daar zijn lege kadertjes het trieste resultaat van mijn zoekopdracht.

Ik ga op zoek naar oplossingen en kom verschillende mensen tegen die met hetzelfde probleem zitten.
Wat met opvalt is dat al die mensen werken met een router, dus ik veronderstel dat het probleem daarmee te maken heeft.

Ik probeerde een oplossing van sig uit, die voorstelde om een paar ip adressen toe te voegen:

System Preferences>Network>Advanced>DNS. Put these in the DNS Servers box and then hit OK. Then hit Apply:
208.67.222.222
208.67.220.220

Maar dat leverde niet veel op.

Wat wel werkte was:

Type “about:config” into the firefox address bar and adjust the following settings:

network
.http.max-connections-per-server to 2
network.http.max-connections to 6
network.http.pipelining to true

via http://www.mac-forums.com/forums/os-x-operating-system/139261-google-images-displaying-problem-while-browsing-mac-os-10-4-11-a-2.html

Na deze aanpassingen (die enkel in Firefox gewijzigd kunnen worden) werkte alles terug normaal.
Moest er iemand zijn die weet wat nu het exacte probleem was en hier een andere -betere- oplossing voor heeft mag dat uiteraard altijd laten weten.

Ik zal je dankbaar zijn! 😉


Anysurfer op bezoek

Monday, 22 March 2010

Vandaag kwamen Bart en Gijs van Anysurfer langs.
Anysurfer is een kwaliteitslabel voor websites die voor iedereen toegankelijk zijn — ook voor mensen met een functiebeperking.

Ze legden uit dat niet iedereen zomaar een website kan gebruiken en dat je best rekening houdt met een aantal zaken, zoals het deftig invullen van uw alt-tags bij afbeeldingen.
Tijdens hun uitleg kregen we ook een demo van een persoon met een visuele beperking die zijn ervaringen met ons wou delen.
Echt knap trouwens dat het internet ervoor zorgt dat mensen met een functiebeperking gemakkelijker dan ooit aan nieuwsberichten geraken.

Screenshot Anysurfer Quickstart

Screenshot Anysurfer Quickstart

Na de uitleg -waar onze leerkracht presentatietechnieken dagen zou nodig hebben om alle opmerkingen te overlopen- was het aan ons.
We mochten inloggen op het anysurfersysteem en kregen vier websites die wij, als student, aan een audit mochten onderwerpen. (dus zo doen ze dat 😉 )
We kregen eveneens een checklist (Quickscan) met alle puntjes mooi opgesomd.
Onze bevindingen worden dan samengevoegd met de audits van de andere hogescholen die ook deelnemen aan dit project.

Op zich vind ik dat een zeer mooi en bewonderenswaardig initiatief.
Er is absoluut niets mis met het toegankelijk maken van uw website voor iedereen.

Maar ik heb zo mijn bedenkingen bij het label Anysurfer…

Wil je zo’n label op je website hebben dan moet je website daarvoor een audit en een validatie ondergaan.
De prijzen zijn respectievelijk € 540 en € 270 voor een mini-website. En dat zonder de 21% btw.
Wil je een uitgebreid auditrapport en heb je een grote website dan betaal je € 1080 + € 900 = € 1980.
En die prijs is -uiteraard- ook zonder btw.

Nu, ik kan me best voorstellen dat er heel wat scholen, jeugdverenigingen en andere vzw’s
hun website wel in orde WILLEN maken maar daar niet, of nauwelijks, een budget voor hebben.
Zo merk ik bij mezelf dat ik de moeite niet wil doen om mijn websites volledig in orde te brengen omdat ik geen “prijs” krijg voor mijn moeite.
Hoe toegankelijk mijn website ook is, het label zal er niet staan pronken vooraleer ik meer dan € 1000 heb uitgegeven.
Geld dat ik simpelweg niet heb.

Zou zo’n label niet gratis moeten zijn? Of op z’n minst een gratis variant?

Zodat het label ook toegankelijk wordt voor mensen met een financiële beperking…

EDIT (23 maart 2010 – 17:43): Blijkbaar bestaat er een manier om ook gratis het label te krijgen. Zie ook hier.

EDIT (22 juni 2011 – 14:10): En blijkbaar zijn de links niet meer beschikbaar 🙂


Woordjes

Tuesday, 23 March 2010

Sinds het begin van dit semester moeten we elke week Franse woordjes oefenen.
Mezelf kennende wist ik dat ik zoiets niet lang zou volhouden,
tenzij er een manier bestond waarbij het leuk is om die woordjes te oefenen… als ik er dus een soort uitdaging van kon maken.
Na enig denkwerk besloot ik om zelf een programmaatje te schrijven. “Woordjes” was geboren!

Nu we halfweg het semester zijn en het programmaatje bruikbaar, maar nog niet perfect, is wil ik het met jullie delen.
U vindt de download link in de rechter kolom.

Hoe gebruik ik woordjes?

  • Eens gedownload dubbelklikt u op de zip-file. (voor Windows-gebruikers is dat “bestanden uitpakken” ofzoiets)
  • Een map, Woordjes, komt tevoorschijn met daarin het bestand Woordjes.jar.
  • U dubbelklikt op Woordjes.jar (Bij oude Linux distributies kan het zijn dat u het programma via de commandline moet opstarten. Dit doet u met het commando: java -jar Woordjes.jar)
  • U krijgt dan het startscherm te zien met daarop het eerste woord dat u moet vertalen. (in dit geval “een hond”)
startscherm woordjes

Het Woordjes startscherm

U typt dan de vertaling, in dit geval un chien, in het tekstveld en drukt op enter.
Als het woord juist is dan geeft hij het volgende woord dat u kan vertalen.
Is het woord fout dan krijgt u de juiste vertaling te zien in het rood, die dient u dan over te typen in het tekstveld.
Vervolgens drukt u weer op enter.

Is het woord deze keer wel juist dan krijgt u het volgende woord te zien.
Is het woord fout dan blijft hij vragen naar de juiste vertaling.

Voorlopig is er nog geen mogelijkheid om zonder een juiste oplossing naar het volgende woord te gaan.


Wiskunde: oefeningetjes

Thursday, 13 May 2010

Eigenlijk is dit meer een oefening op JavaScript dan op wiskunde,
maar misschien is het wel nuttig voor sommigen onder ons.

Geraak jij nog aan 10/10?

Veel succes!


Verkiezingen tijdens examens

Sunday, 13 June 2010

Dat verkiezingen tijdens de examens geen goede zaak zijn hoef ik u waarschijnlijk niet meer te vertellen.

Ja, ik weet ook wel dat deze verkiezingen er eerder “per ongeluk” gekomen zijn en dus niet bewust tijdens de examenperiode georganiseerd zijn.

En ik weet ook wel dat het half uurtje dat je verliest door naar het stemhokje te gaan en je stem uit te brengen (bij ons hoef je haast nooit aan te schuiven en kan je meestal direct het stemhokje in) niet echt het verschil gaat maken voor je examen.

Maar als je een bewuste stem wil uitbrengen -en dat wil ik- is het niet overbodig om het nieuws af-en-toe te volgen zodat je weet waar elke partij voor staat.
En daar… daar kruipt wél veel tijd in.

Dus lieve politiekers, als je de volgende keer verkiezingen organiseert, doe dat dan buiten de examenperiode.


Woordjes Versie 0.6

Friday, 18 June 2010

Een nieuwe versie van Woordjes is uit!
Met Woordjes leer je je moeilijke woordjes. (what’s in a name…)

In deze nieuwe versie is vooral aandacht besteed aan de look-and-feel van het programma.
Ondanks dat het geschreven is voor mac zou het ook moeten werken in Windows en Linux.

Het startscherm van Woordjes

Het startscherm van Woordjes.

Over Woordjes, use of Macwidgets for layout

Over Woordjes (use of Macwidgets for layout)

Duidelijke foutmeldingen

Duidelijke foutmeldingen

Settings

Settings

De nieuwe versie is vanaf vandaag te downloaden. En dat kan hier.


Gitaar

Friday, 13 August 2010

Zo, de eerste voorzichtige stapjes op gitaar zijn gezet.
Ik volg geen lessen, dus alles wat je ziet is zelf geleerd en heel waarschijnlijk niet volgens de regels van de kunst. Maar er kwam geluid uit en met een beetje goede wil trok het nog op iets ook. Dus ik was blij genoeg…


Uit het leven van een student

Monday, 16 August 2010

opstaan 7 uur: Ben nog moe, niet wakker. zuur.
8 uur: ontbijten dan. Geen zin, geen honger, snel een boterham.
9 uur: Eindelijk boven, beginnen leren, ik heb het moeten beloven.
9 uur en 1: *pling* daar begint het al: nieuwe mail.
9 uur 15: een nieuwe mac (en ander nieuws) dat had ik nog niet gezien.
12 uur: etenstijd. Niks geleerd, heb een beetje spijt.
1 uur: belgerinkel, ga jij mee naar de winkel?

2 uur: terug boven, snel wat leren, ik heb het moeten beloven.
2 uur 5: Hé, wat is dat met m’n schijf?
3 uur: schijf macheert. Ik ben een pro… maar heb nog niks geleerd.
4 uur: Tijd voor een koek. Motivatie om te leren raakt stilaan zoek.
4 uur 40: ’t zit niet mee. Hoe zit het met m’n kennis van Java of PHP?
6u: Avondmaal: M’n nieuw programmaatje werkt. Ik ben geniaal.

7u: Alweer boven, om écht te leren, ik heb het moeten beloven.
8u: Tijd voor TerZake. Ik moet toch van iets op de hoogte raken?
9u: Snel een spel. Max 10 minuutjes en dan begin ik écht wel.
12:30: Dat ging snel voorbij! Er moet echt meer tijd zijn voor mij.
12:31: Snel die cursus open en wat leren. Voor nacht en dag weer keren.
2u: Tranendal. Ik moet beter kunnen, dat weet iedereen toch al?
3u: Oogjes dicht. Wacht, ik schrijf nog even een gedicht.
3:20: Tijd dat ik in slaap val en bedenk dat morgen… net hetzelfde wezen zal.


WP Minify

Monday, 16 August 2010

Een plugin voor WordPress die er voor zorgt dat al uw javascript en css-files gecombineerd en gecomprimeerd worden zodat de laadtijd van uw pagina drastisch verkort wordt.
Aan te raden en hier te downloaden.


Mockup van Woordjes

Thursday, 19 August 2010

1) Het startscherm is grotendeels hetzelfde gebleven. Ik heb bewust gekozen om de interface zo eenvoudig mogelijk te houden zonder afbreuk te doen aan het gebruiksgemak.
De menu bovenaan maakt geen gebruik meer van drop-down menu’s maar zijn rechtstreekse knoppen geworden.

2) Rechts onderaan op het startscherm is er een kleine MotiVeter geplaatst. De Motiveter laat zien hoeveel woorden je tijdens 1 ronde juist had. De bedoeling is uiteraard om het balkje helemaal gevuld te krijgen, wat wil zeggen dat je alle woorden correct ingevuld had.
Er ontbreekt nog wel tekst die aangeeft hoeveel woorden je nog moet invullen. Essentieel, denk ik, om te vermijden dat het lijkt alsof je aan een eindeloos lange woordenreeks bezig bent.

3) Aan het instellingenscherm is ook niet zo veel veranderd. Enkel de optie vertaling omdraaien is vanuit de voormalige drop-down’s naar hier gekomen.

4) Het nieuwe scherm Lijst opstellen is nog volop onder constructie.
Waar je een woord en zijn vertaling moet zetten is vrij duidelijk maar toch rijzen er enkele problemen:

  • Hoe geef je aan dat een woord meerdere vertalingen heeft?
  • Wat doe je als je meer woorden wil invullen dan de voorziene 6 (8-10-99-…) kadertjes?
  • Wat doe je als je een bestaande file wilt aanpassen/woorden toevoegen?
  • Hoe wis je een bestaande file?

Uiteraard kan je hiervoor allemaal knopjes voorzien, maar dan staat je scherm al snel vol met knoppen en geen mens die nog weet waarvoor welke knop dient.

Dus voorlopig zoeken we verder!


En uw wachtboek is?

Friday, 20 August 2010

Een kort wachtwoord is nutteloos, zo blijkt.

De reden daarvoor is simpel:
Vandaag zijn computerprocessors zo krachtig dat ze op korte tijd een wachtwoord kunnen achterhalen.
En dat hoeft geen supercomputer te zijn: een doorsnee thuiscomputer heeft vandaag evenveel rekenkracht als de krachtigste computer van tien jaar geleden.

Nu allemaal goed en wel, maar wat gaan we over 10 jaar doen? Een wachtboek intypen ter vervanging van het huidige wachtwoord?

Of misschien moeten we eens stilaan gaan nadenken over een andere manier om onze gegevens online te beschermen.


Gebruiksvriendelijkheid in Woordjes

Sunday, 29 August 2010

Uiteraard laat ik Woordjes niet zomaar op de mensheid los en wordt het op voorhand uitvoerig getest.
Dat leidt vaak tot, op het eerst zicht banale, zaken die verbeterd kunnen worden maar die Woordjes als programma veel gebruiksvriendelijker maken.

Wanneer het programma opent bijvoorbeeld, of je start een nieuw spel, hebben veel mensen de neiging om direct te beginnen typen.
Het veld waarin je moet typen is echter nog niet actief waardoor je in de meeste gevallen dus helemaal niets typt.
Dat is snel verholpen door in het invoerveld te klikken zodat er een pinkend streepje staat of door in je code snel .requestFocusInWindow() toe te voegen. Eén lijn meer in je code, maar een wereld van verschil voor het gebruiksgemak. En dat is maar één van de tientallen kleine zaken die Woordjes tot een gebruiksvriendelijk programma maken.

Woordjes in Windows XP en in OS X

Woordjes in Windows XP (L) en in Mac OS X (R)

Van bij het begin was het de bedoeling dat Woordjes op zoveel mogelijk systemen moest werken. Als kind kreeg ik thuis enkel Linux voor m’n neus en op school enkel Windows. Ik vond het verschrikkelijk dat de programma’s die bestonden voor het één niet werkten op het ander en omgekeerd. Dus Woordjes moest zowel op Linux, Windows als Mac (en nog een heleboel andere) werken.

Dat Woordjes op zoveel mogelijk systemen moest werken heeft m’n keuze van de programmeertaal sterk beïnvloed. Ik koos voor Java. Java mag dan wel werken op elk platform waarop een JVM geïnstalleerd is en dus een “platform-onafhankelijke” programmeertaal zijn, tijdens het programmeren ontdekte ik toch een paar zaken die op elk platform anders zijn. Zodra je begint te werken met GUI’s en het wegschrijven van bestanden (om je instellingen op te slaan) blijkt dat elk systeem z’n eigen manier en eigen directory’s gebruikt om gegevens in op te slaan, dus moet je voor elk systeem een, weliswaar klein, stukje code aanpassen naargelang het platform dat gebruikt wordt.

Het Woordjes icoontje

Het Woordjes icoontje

Toen Woordjes eindelijk succesvol getest was in zowel, Linux (Ubuntu en OpenSUSE), Windows (XP) en Mac (OS X, 10.6.4) zat ik nog met een probleempje. Hoewel het programma perfect te openen was met een klik in Ubuntu, Xp en Mac, was dat niet het geval in OpenSUSE.
Het starten van het programma via de commandline is niet echt moeilijk ($java -jar woordjes.jar) maar ik kan me best voorstellen dat dit niet voor iedereen vanzelfsprekend is. Daarom: een klikbaar icoontje zou handig zijn. En niet veel later had Woordjes een Woordjes.exe (Windows), Woordjes.app (Mac) en een Woordjes.jar (Elk systeem waarop een JVM draait). Downloaden en klikken. That’s it.

Helaas heb je dan al helemaal geen platformonafhankelijk programma meer, maar ik vond het belangrijk dat Woordjes simpel blijft om te gebruiken.

En dat is tot hiertoe goed gelukt.

Ohja, in de laatste versie van Woordjes (0.6.4, maar pas downloadbaar voor iedereen vanaf 0.7) zit ook een controle op update’s. Zo kan je op elk moment controleren of je met de laatste versie van Woordjes aan ’t werken bent. 😉


Testen, testen en… testen!

Thursday, 9 September 2010

Je raadt het al, het gaat hier over Woordjes!

Tijdens het testen was er commentaar op het beeld na het vertalen van het laatste woord.
Je kreeg de tekst “Afgelopen” op de plaats waar normaal het te vertalen woord verscheen. Duidelijk genoeg, dacht ik, maar dat bleek niet zo te zijn.
Dan maar zorgen dat het invulveld niet meer bruikbaar is en een grijze achtergrondkleur kreeg, maar nog steeds hadden de gebruikers de neiging om het invulveld te gebruiken. Ook als dit niet kon…

Mockup Woordjes Resultatenscherm

Mockup Woordjes Resultatenscherm

Terug naar de tekentafel dus. Hoewel ik geen nieuwe schermen wilde toevoegen aan Woordjes leek dit toch de beste manier om het einde van de woordlijst aan te duiden. Een duidelijke tabel met daarin de resultaten, het aantal fouten,… Geen twijfel mogelijk dat dit het einde is van de woordlijst.

Wat nog ontbreekt op de mockup maar al wel geïntegreerd is in de huidige versie van Woordjes is een grote startknop onderaan de tabel met resultaten. Dit om te voorkomen dat het resultatenscherm een “dood” scherm zou worden en je het gevoel krijgt: “En wat nu?”.

In de vorige blogpost zag je screenshots van Windows XP en Mac OS X.
Je had Ubuntu dus nog te goed. Bij Ubuntu is standaard Java niet geïnstalleerd. Uiteraard moet je dit eerst installeren voordat je Woordjes installeert.

Woordjes in Ubuntu

Woordjes in Ubuntu


De allerlaatste keer

Tuesday, 14 September 2010

Deze zondag, ergens in de late namiddag, zat ik in de bus op weg naar huis. M’n laatste dag als leider zat er bijna op en bij de eerste zonnestralen (het was een regenachtige dag geweest) die te voorschijn kwamen, keek ik terug naar wat ik al die jaren had beleefd.

Die eerste jaren als kapoen bijvoorbeeld: voor de eerste keer op weekend, voor de eerste keer op kamp, samen spelletjes spelen, leren samenwerken om iets  te bereiken. Het was allemaal echt geweldig! We hadden nog veel fantasie en waren er zeker van dat er Orks in de bossen schuilden. Hoe kon het ook anders, met een weekendthema als Lord of the Rings en leiding die alles in een heerlijk kleedje gestoken had?

Of bij de jonggivers, waar je al in tenten mocht slapen, zelf vuur leerde maken en op tweedaagse mocht. Je mocht niet liften, maar stiekem deden we het toch. Het was spannend, leuk en met weemoed dacht ik terug aan de verre staptochten die we maakten, en aan de adembenemende vergezichten die verscholen lagen tussen een paar bossen en dan stap voor stap tevoorschijn kwamen. Zelfs als 14-jarige maakt dat je even stil.
Of het 24-uren spel waarbij je zowel zonsop- als ondergang kon zien of slierten mist die over de velden zweefden en de volledige omgeving nét iets meer sprookjesachtig maakten.

Of die tijd toen ik bij de Jins zat, waar we zelf geld moesten verdienen om op buitenlands kamp te kunnen gaan dat we dan ook semi-zelf in elkaar mochten steken. Gelukkig met leiding die dan een oogje in ’t zeil houdt.

Of het eerste jaar zelf in leiding staan, zelf verantwoordelijkheid nemen. Beseffen dat leiding méér is dan zondagmiddag van 2 tot 5. Groepsraden, leidingsweekends, vzw-vergaderingen en nog zoveel andere dingen waarvan ik als lid niet eens wist dat ze bestonden. Maar ik deed het graag. Ik heb veel geleerd in die 5 jaar dat ik in leiding stond. Ik heb opgekeken naar mijn groepsleiding die voor veel problemen een perfecte oplossing in petto had.
Ik heb ook groepsleiding gehad waarbij ik het vaak niet eens was met de beslissingen die ze namen. Maar ook dat hoort er bij en ook daarvan heb ik veel geleerd. Ik heb het geluk gehad om altijd met toffe mensen in een tak te staan en ik ben ze daar bijzonder dankbaar voor. Zeker in m’n eerste jaar heb ik gigantisch veel geleerd van m’n medeleiding. Nadien was ik blij dat ik mijn kennis ook kon doorgeven, ook al was dat niet zo veel, ik hoop dat ze er iets aan gehad hebben.

Dit alles is maar een fractie van wat er tijdens de busrit door m’n hoofd ging, nog zoveel meer dingen die ik heb meegemaakt zou ik hier kunnen neerpennen. Uiteindelijk stopte de bus vlak voor het scoutslokaal en schoot ik wakker. Ik stapte uit de bus, zwaaide nog even naar m’n vertrekkende leden en babbelde nog even na met de leiding. Niet veel later vertrok ik naar huis. Voor de allerlaatste keer…


Een reis en tijd

Sunday, 5 December 2010

Beste NMBS,

Graag wil ik jullie bedanken voor dit ongelooflijk spannende weekend.

Het begon op zaterdag, toen mijn trein in Brussel-Zuid van 10:42 om 10:52 eindelijk aankwam en dan zonder vertraging (?) vertrok richting Nijvel. Uiteraard hadden alle uurwerken op het station, het klokje op m’n gsm, mijn polsuurwerk en dat van m’n medereizigers last van exact dezelfde fout, waardoor een melding van vertraging op de borden of op de website niet noodzakelijk was.

Of wat dacht u van deze zondag? Het is zondag, dus nemen er maar weinig mensen de trein. Te weinig misschien, dus schaffen we de trein van Nijvel naar Brussel-Zuid van 16:29 (in Sint-Genesius-Rode) maar af. Dat ik daardoor alle daaropvolgende treinen mis, is uiteraard maar een klein detail.

Eindelijk toegekomen in Brussel-Zuid staat mijn trein naar Antwerpen netjes (nuja, proper was hij niet echt) te wachten op spoor 20. (De website zei spoor 21, maar goed, dat ligt toch vlak naast elkaar, nietwaar?)
Dat deze trein geen verwarming heeft en ook geen verlichting is uiteraard compleet begrijpbaar. Het vriest maar licht en gezien het aantal passagiers (Sardientjes in blik, iemand…? ) in de trein is verwarming slechts overbodige luxe… Het is tenslotte crisis voor iedereen.
En wie heeft er nu verlichting nodig om te kunnen praten met je medepassagiers. Een beetje sociaal zijn kan écht geen kwaad hoor.

Gelukkig heb ik in Antwerpen-Centraal een perfecte aansluiting op mijn trein naar Essen. En het moet gezegd, hij vertrok zelfs op tijd. (Als het goed is, zeggen we het ook) Dat deze trein vanaf 12 december (bij het invoeren van de nieuwe dienstregeling) 30min later vertrekt, waardoor ik dus meer dan een half uur mag wachten in het station en daaruit logisch volgt dat mijn sowieso al lange reis nog eens 30 minuten langer duurt; is ook perfect te begrijpen. De nieuwe dienstroosters zorgen immers voor betere aansluitingen. (Maar waar?)

Moest dit de enige keer zijn dat ik “wat later” aankwam op mijn bestemming, zou ik waarschijnlijk niet de moeite doen om hier woorden aan vuil te maken. Maar, lieve NMBS, ik heb het gevoel dat het hoe langer hoe erger wordt.

Morgen neem ik opnieuw de trein. 2x zelfs.
Zorgen jullie dat mijn trein op tijd rijdt?

Alsjeblieft?


Woordjes Versie 0.7

Tuesday, 11 January 2011

11/1/11 11:11:11 Hét perfecte moment om de nieuwe versie (helaas niet 11.11) van Woordjes op de mensheid los te laten.

Woordjes is een klein programmaatje waarmee je je woordenschat kan oefenen.
Je typt een reeks woorden en hun vertalingen in en je oefent tot je ze allemaal kent!
Simpel en effectief.

Er zitten heel wat nieuwigheden in deze versie, waarvan veel onder de motorkap:

Zelf lijsten aanmaken

Je kon in de vorige versie’s van Woordjes ook al je eigen lijst aanmaken, maar die was beperkt.
Vanaf nu kan je zélf een lijst aanmaken met -bijna- oneindig veel woordjes.
Te vinden onder Edit > Compose List

Zelf lijsten aanmaken met woordjes 0.7

Zelf lijsten maken

Sneltoetsen

We hebben ook aan de mensen gedacht die hun muis niet (kunnen) gebruiken.
Als je ALT-toets ingedrukt houdt zal je zien dat in het menu verschillende letters onderlijnt worden. Een combinatie van die letter + alt opent het corresponderende menu.

shortcuts via de Alt toets

de Alt-toets onderlijnd de sneltoetsen

Betere instellingen

Nieuw bij instellingen is de mogelijkheid om ook de lettergrootte aan te passen. Handig voor mensen die niet meer goed kunnen zien. (En niet weten dat je bij je OS de lettergrootte kan instellen)

Instellingen

Instellingen

En nog veel meer…

Verder hebben we ook onder de motorkap ons werk gedaan waardoor Woordjes nu sneller werkt.
We hebben verschillende bugs aangepakt en ons splashscherm onder handen genomen.
Je zal waarschijnlijk ook wel gemerkt hebben dat woordjes volledig in het Engels is. Dat heeft te maken met een nieuwe, vertaalbare interface waardoor Woordjes in de toekomst in alle mogelijke talen kan worden vertaald.

Opmerkingen, klachten of suggesties zijn steeds welkom. Deze kunnen geuit worden in de vorm van commentaar onder dit bericht of door gebruik te maken van de contactpagina.

Woordjes downloaden kan hier.


Wachtwoorden: een mogelijke oplossing

Wednesday, 9 March 2011

Een tijdje geleden schreef ik een blogpost over het feit dat moderne computers steeds krachtiger worden.
Zo krachtig zelfs dat een gewone huis-tuin-en-keukenpc in staat zal zijn om wachtwoorden te kraken.

Daarom denk ik dat wachtwoorden zoals we die nu kennen op (lange) termijn zullen verdwijnen.
Maar wat zijn dan de alternatieven?

Waarschijnlijk ben ik één van de weinige mensen die vrijwillig een wachtwoord op zijn gsm heeft staan.
Het gaat dan niet over de PIN-code maar over een wachtwoord dat je nodig hebt om wat-dan-ook te doen op je gsm.

Al is “wachtwoord” niet echt het juiste woord want in dit geval is het een patroon dat je moet tekenen.

Android-Pattern-Lock

Android-Pattern-Lock

Het nadeel daarvan is dat je met je vingers steeds hetzelfde patroon maakt op het scherm en dat het patroon, hoe ingewikkeld ook, relatief gemakkelijk te achterhalen is, juist omdat je steeds hetzelfde patroon op je scherm tekent bij ALLES wat je op je gsm wil doen.

Nog een nadeel van zo’n patroon: er zijn minder combinatiemogelijkheden. Een wachtwoord kan bestaan uit 26 verschillende letters, 10 verschillende cijfers en dan vergeet ik nog een aantal zaken zoals verschillende speciale tekens en het verschil tussen hoofd- en kleine letters. Een patroon met 9 bollen heeft uiteraard minder mogelijke combinaties.

Er zijn dus meer mogelijkheden bij een gewoon wachtwoord met karakters dan bij een patroon met negen bollen.

Een wachtwoord met karakters, met een toetsenbord ingegeven, is ook relatief gemakkelijk te achterhalen. Al was het maar door letterlijk af te luisteren wat iemand typt. (Elke toets heeft een uniek geluid, door op te nemen wat iemand typt is het redelijk eenvoudig te achterhalen wat er getypt werd. Ook het wachtwoord)
Ik denk dat het moeilijker is om zoiets te achterhalen als je een patroon tekent, maar dan een patroon dat niet elke keer hetzelfde is.

Je toont de gebruiker een virtueel toetsenbord op het scherm waarop hij zijn wachtwoord moet aanklikken. (Of de karakters aanraken in het geval van een gsm)

Een on-screen toetsenbord met karakters in random volgorde

Klik je wachtwoord aan (Eerste keer)

Om te vermijden dat je elke keer hetzelfde patroon op je scherm aanklikt/aanraakt verwisselen de karakters bij elke poging van plaats.
Zelfs als je er dan in slaagt om de coördinaten van de muis/vinger op te vangen ben je daar niets mee zolang je niet weet welk karakter overeen komt met die coördinaten.

Een on-screen toetsenbord met karakters in (een andere) random volgorde

Klik je wachtwoord aan (Tweede keer)

Op de afbeeldingen geef je twee maal het wachtwoord ( in dit geval M8_(O0)* ) in. De tweede keer staan de karakters op een andere plaats dan de eerste keer en bij de derde poging zullen de karakters opnieuw van plaats veranderd zijn.

Uiteraard is dit maar een ruwe denkoefening en zeker nog geen systeem dat direct toegepast kan worden.
Hou er ook rekening mee dat op de afbeeldingen een vereenvoudigde versie van het toetsenbord wordt weergegeven, uiteraard is het de bedoeling om meer dan 21 karakters in te kunnen geven.


Password Strength

Wednesday, 10 August 2011

To anyone who understands information theory and security and is in an infuriating argument with someone who does not (possibly involving mixed case), I sincerely apologize.
Via http://xkcd.com/936/
(more…)



Psychologie is geen exacte wetenschap…

Wednesday, 12 October 2011

…en dat is informatica ook niet.

Nog niet zo lang geleden las ik  een opiniestuk waarin de schrijver het gebruik van de Rorschachtest als diagnostisch instrument in professionele omgevingen hekelde.
Daaruit bleek dat mensen onvoorspelbaar zijn en dat we eigenlijk nog altijd niet met zekerheid kunnen zeggen hoe iemand zal reageren in een bepaalde situatie.
Psychologie is dus geen exacte wetenschap.

Wiskunde, en bij uitbreiding informatica, horen dat wel te zijn denk ik dan. Maar is dat wel zo?

Als ik één optel bij één dan komt iedereen, waar ook ter wereld, uit bij twee. Omdat er ooit is afgesproken dat 1 + 1 gelijk is aan 2.

Mocht ik die formule in een computerprogramma zetten, dan zal ik ook altijd 2 als uitkomst krijgen.

Probeer onderstaande Java-code maar eens uit te voeren. Wedden dat je 2 als resultaat krijgt?

package som;

public class Main {

    public static void main(String[] args) {
        telOp();
    }

    public static void telOp(){

        int antwoord = 1 + 1;

        System.out.println(antwoord);
    }

}

Uiteraard, denk je, het hoort twee als antwoord te geven. Dat is toch logisch?

En daar heb je gelijk in. Alleen, wanneer een programma behoorlijk groot begint te worden en bestaat uit ongelooflijk veel lijnen code, dan zal er -altijd- ergens een fout inzitten die ofwel nog niet ontdekt is ofwel zo banaal is dat men de moeite niet doet om de fout er uit te halen.

Op zich is dat niet erg natuurlijk, het programma zal waarschijnlijk wel doen wat het moet doen en in het leeuwendeel van de gevallen werkt alles zoals het hoort.

En zo is het net bij de mens. Hoeveel lijnen code zouden er nodig zijn om het menselijk brein in een programma te steken? Gigantisch veel lijkt me.
Een programma van die omvang zal ongetwijfeld fouten bevatten.
Zelfs als het door de beste programmeurs die je op aarde kan vinden in elkaar gestoken wordt.
Zelfs als verschillende mensen het zouden nakijken op fouten.

Nochtans, het is allemaal code. Alleen maar ‘ja’ of ‘nee’. Dezelfde code die verantwoordelijk is voor onze 1 + 1 = 2.

Het programma dat het menselijk brein moet simuleren zal daardoor even “exact” zijn als het echte menselijke brein. Niet helemaal exact dus. Net zoals psychologie en dus ook net zoals… informatica.


Git-commando’s

Wednesday, 16 November 2011

Al een tijdje geleden mocht ik de wondere wereld ontdekken die Git heet. (mee) Ontwikkeld trouwens door dezelfde kerel die ooit een os uit z’n mouw schudde.

Soit, nu we op school ook Git gaan gebruiken werd het tijd om wat commando’s op te frissen. En te delen met andere zielen op deze wereld. Je weet maar nooit waar dat goed voor is. 😉

Git installeren blijkt trouwens niet altijd even gemakkelijk te zijn maar dankzij MacPorts volstond 1 regeltje:

$ sudo port install git-core

Start

Maak van je huidige map en git-project.

$ git init

Alle andere commando’s die je vanaf nu uitvoert zijn in deze map.

Workflow

Is er iets veranderd?

$ git status
1 bestand toevoegen

$ git add filename.ext
Alle bestanden van de huidige map toevoegen

$ git add *
Als al je bestanden die je nodig hebt zijn toegevoegd dan kan je
je wijzigingen opslaan (committen) waar -m staat voor een boodschap (message) die je wil toevoegen.

$ git commit -m "Dit is mijn boodschap" 
Als je klaar bent en je wijzigingen naar de server wil doorsturen gebruik je onderstaande code. Waarbij origin de branch is naarwaar je ’t wil sturen.

$ git push -u origin master

Code van de server halen

Git pull haalt wat je vraagt van de server. In dit geval het volledige project dus. Daarbij zal hij slim te werk gaan en gewijzigde bestanden standaard eerst fetchen en dan mergen.

$ git pull git@github.com:Username/project.git
Fetch lijkt op pull maar zal de (gewijzigde) bestanden niet samenvoegen (mergen)

$ git fetch git@github.com:Username/project.git
Clone tenslotte zal het volledige project klonen. Handig als je in een nieuwe map wilt beginnen werken aan je project.

$ git clone git@github.com:Username/project.git

Conflicten oplossen

git mergetool

It opens a GUI that steps you through each conflict and you get to choose how to merge. Sometimes it requires a bit of hand editing afterwards, but usually it’s enough by itself. Much better than doing the whole thing by hand certainly

Change origin

Add origin

cd /path/to/my/repo
git remote add origin ssh://git@bitbucket.org/username/projectname.git
git push -u origin –all # pushes up the repo and its refs for the first time
git push -u origin –tags # pushes up any tags

Remove already existing origin

git remote -v

git remote rm destination
# Remove remote

Pull

Ge hebt ne verkeerde pull gedaan?

doe hem dan terug weg
git reset HEAD@{1}

Stash

Om alle stashes te zien

git stash list

om ne stash te verwijderen

git stash drop


Uitdoofsynchronisatie

Thursday, 5 April 2012

Synchroniseren. Hoe moeilijk kan het zijn? Je neemt potlood en papier en tekent snel wat schemaatjes met een aantal scenario’s die zich mogelijk kunnen voordoen bij het synchroniseren. Deze blogpost is het verhaal waarin ik op zoek ga naar de ideale manier waarop verschillende mobiele devices steeds over dezelfde informatie (vakken) beschikken én die informatie kunnen aanpassen. Simpel, toch?

  1. Data downloaden en gewoon alles overschrijven.
    Toegegeven, dit is nogal drastisch. Maar hé, het werkt. We vergeten gemakkelijkheidshalve dan wel dat ALLE data downloaden zelden nodig is, laat staan alles overschrijven…
    Eigenlijk had deze eerste stap meer als doel vertrouwd te raken met de API van de rest-server. Data versleuteld downloaden, aanmelden met Digest access authentication, gegevens versturen naar de rest-server etc.



    Your browser does not support the canvas element.Stap 1: Data downloaden en gewoon alles overschrijven.

    Stap 1: Data downloaden en gewoon alles overschrijven.

  2. Kijk welke vakken niet online staan (op basis van ID) en download enkel die vakken.
    Stap twee, we voegen basislogica toe aan het downloadproces.
    We downloaden niet meer klakkeloos alle vakken, maar enkel de vakken die we nog niet hebben. Om dat te kunnen doen, maken we twee lijstjes met alle vak-ID’s online en alle vak-ID’s offline. Daarna vergelijken we beide lijstjes en weten we welk vak ontbreekt en waar het ontbreekt.
    In het geval van het prentje hieronder ontbreekt online het vak met ID 125. Dat vak uploaden we dus naar de online database zodat we daar ook vak 125 hebben.

    Stap 2: Vergelijk ID's van vakken online met vakken offline

    Stap 2: Vergelijk ID’s van vakken online met vakken offline

  3. Kijk welke vakken offline staan, kijk welke vakken online staan en synchroniseer deze.
    Oeps! Probleem. Een ID-nummer is immers niet representatief voor een vak. Als ik offline een nieuw vak aanmaak dan zal dat nieuwe vak een nieuw ID-nummer krijgen. De kans is groot dat er ondertussen online ook een vak is aangemaakt met datzelfde ID. Hoewel het vak met ID-nummer 195 dus zowel offline als online aanwezig is, gaat het wel degelijk over een ander vak. Afgaan op ID-nummers gaat dus niet. Een vak-ID is dus enkel representatief voor één vak binnen dezelfde database. Als we met verschillende databases werken, in dit geval online en offline, dan kan een vak-ID twee keer voorkomen en toch naar een ander vak verwijzen.Het probleem ligt bij de automatische nummering in de database. Nieuwe inhoud krijgt een nummer mee dat net 1 eenheid groter is dan de vorige inzending. Als een device geen verbinding heeft met het internet en de laatste inzending 124 was dan zal de volgende inzending 125 zijn. Ook als er ondertussen door andere mensen 30 nieuwe vakken ingediend zijn en het eigenlijke ID-nummer dus 155 had moeten zijn.

    ID is hetzelfde, titel is anders

    ID is hetzelfde, titel is anders

    Een mogelijk oplossing bestaat eruit de data zelf te gaan vergelijken. Omdat het over (potentieel) gevoelige data gaat, leek het mij veiliger om niet de data zelf maar de md5-hashes van de data te gaan vergelijken. Dat werkte.
    Als we met verschillende data zitten en het ID-nummer is hetzelfde, nemen we de meest recente wijziging.

    Vergelijken van vaktitels dmv md5-hashes

    Vergelijken van vaktitels dmv md5-hashes

    Oh ja?
    Want als we zowel vak 125 online als het vak 125 offline willen behouden, dan zal dat niet gaan. We zouden 1 van beide immers overschrijven met het vak dat het laatst werd aangemaakt.

    Of stel: Jan Janssens synchroniseert in februari zijn data en vertrekt een maand op vakantie. In maart vinden er verschillende grote wijzigingen plaats in de online database. In april keert Jan Janssens terug, kan niet synchroniseren, maar maakt toch een aanpassing aan de data en wil dan zijn veranderingen online opslaan.

    Probleem! Hoewel de data van Jan Janssens wel over de recentste data beschikt, is het zeker niet zijn data die we online willen hebben.

    Data samenvoegen (mergen) met de reeds bestaande data, is door de aard van de data niet mogelijk. Oeps.

    Volgende idee: we bewaren beide vakken, wetende dat dat niet ideaal is.

  4. Bewaar beide vakken.
    Bewaar beide vakken. Ok. Maar hoe? Ze hebben hetzelfde ID. Moeten we dan nog een tabel aanmaken die het online ID koppelt aan het offline ID? Moeten we het vak-ID aanpassen? Maar hoe? En wat wanneer er al een vak bestaat met dat nieuwe ID? Gaan we bij elke synchronisatie dan op zoek gaan naar alle vrije ID’s en dat vak dan dat nieuwe ID geven? Op die manier zou het kunnen dat een vak tijdens zijn bestaan verschillende keren van ID verandert. Ook niet echt ideaal denk ik dan.

  5. Hou een logboek bij met veranderingen.
    Vanaf hier is het pure improvisatie, louter gebaseerd op een denkoefening en (nog) niet geprogrammeerd. Informatie onder voorbehoud dus.In onze database maken we een nieuwe tabel aan waarin we alle veranderingen opslaan.
    Als er bij die veranderingen bijvoorbeeld een vak aangemaakt is en online heeft er nooit zo’n actie plaatsgevonden dan weten we, ongeacht het vak-ID, dat er online een nieuw vak aangemaakt moet worden. Omgekeerd werkt dat ook uiteraard, als er online een vak is verwijderd en dat vak is nog wel offline aanwezig dan kunnen we dat vak verwijderen. Hoe weten we nu welk vak verwijderd moet worden als we vak-ID’s niet mogen vertrouwen?
    We slaan bij elke verandering een md5-hash van de data op, we vergelijken dan de md5-hash van die online data met de md5-hash van onze data offline.Zo’n tabel met alle aanpassingen wordt uiteraard in no-time gigantisch groot. We slaan immers alle data dubbel op.
    Op zich geen probleem, maar we hoeven die data niet voor eeuwig te bewaren.

  6. Vergeet veranderingen
    Offline is dat redelijk eenvoudig. Als het device verbinding gemaakt heeft met de server en alle gegevens gesynchroniseerd zijn, dan kan het volledige lokale logboek met de veranderingen verwijderd worden. Online is het iets ingewikkelder. Omdat we niet weten hoeveel devices er zijn en sommige devices maar 2 of 3 keer synchroniseren en daarna nooit meer, kunnen we onmogelijk alle veranderingen blijven bijhouden.

Deze manier van data synchroniseren is het resultaat van een persoonlijke denkoefening en dus verre van perfect. Moesten er slimme mensen op de wereld zijn die voor dit probleem een betere oplossing hebben,  lees ik hun oplossing graag in de commentaren hieronder.

Note: In dit voorbeeld gebruik ik als voorbeeld md5 om data te encrypteren. Ik ben mij er van bewust dat er andere en betere manieren bestaan om data one-way te encrypteren. Mocht je dus echt gevoelige data willen opslaan doe je er goed aan jezelf hierover eerst te informeren. ;-)

Drupal 7 tabs (klasse toevoegen)

Wednesday, 2 May 2012

Soms zijn er zo van die dagen waarop je letterlijk uren verschijt (pardon my French) om simpele zaken op te lossen. Stel bijvoorbeeld dat je, gewoon omdat je absoluut met bootstrap wil werken, een klasse wil toevoegen aan Drupal tabs. Gewoon. Een klasse toevoegen.

Geen probleem, we zoeken onze template.php op en typen naar hartelust: (bron: http://drupal.org/node/173880)

function MYTHEME_menu_local_tasks() {
$output = '';
if ($primary = menu_local_tasks()) {
    $output .= "<ul class=\"tabs primary nav nav-tabs\">\n"
    $output .= $primary;
    $output .= "</ul>\n";
}
return $output;
}

Oeps! render($tabs); die in onze page.tpl.php normaal voor onze tabs zou moeten zorgen geeft ons doodleuk “array” terug als resultaat.

We ontmoeten Google, onze goede vriend in tijden van crisis en problemen, en ontdekken dat drupal_render($output) zowaar een mirakeloplossing is. (bron: http://drupal.org/node/986290)
Testen die handel! En jawel hoor, dat doet het…. tot je effectief ook klikt op de netjes van de juiste klasse voorziene tabs. Oeps 2!

    Warning: Invalid argument supplied for foreach() in element_children() (regel 6244 van /Users/..xxx../includes/common.inc).
    Warning: Cannot use a scalar value as an array in drupal_render() (regel 5723 van /Users/..xxx../includes/common.inc).
    Warning: Cannot use a scalar value as an array in drupal_render() (regel 5778 van /Users/..xxx../includes/common.inc).

Een error kleurt ons scherm rood en dat wil nu eenmaal zeggen: niet goed!

Terug op zoek. En deze keer werkt het wel. In je page.tpl.php laat je gewoon die render($tabs) staan en in template.php voeg je volgende code toe: (bron: http://drupal.org/project/basic )

function MYTHEME_menu_local_tasks(&$variables) {
$output = '';
if (!empty($variables['primary'])) {
$variables['primary']['#prefix'] = '<h2>' . t('Primary tabs') . '</h2>';
$variables['primary']['#prefix'] .= '<ul class="nav nav-tabs tabs primary clearfix">';
$variables['primary']['#suffix'] = '</ul>';
$output .= drupal_render($variables['primary']);
}
if (!empty($variables['secondary'])) {
$variables['secondary']['#prefix'] = '<h2>' . t('Secondary tabs') . '</h2>';
$variables['secondary']['#prefix'] .= '<ul>';
$variables['secondary']['#suffix'] = '</ul>';
$output .= drupal_render($variables['secondary']);
}
return $output;
}

waar MYTHEME uiteraard vervangen moet worden door de naam van je theme.

Voila, u heeft zonet uren zoekplezier bespaard. 😉


Digest access authentication in Titanium

Tuesday, 15 May 2012

Blijkbaar is veiligheid geen prioriteit bij appcelerator en implementeren ze wel basic authentication maar geen digest…
Iemand heeft hen dat ooit al wel eens gezegd bij wijze van feature request maar de priority daarvoor is “low”.
Eitherway, dan maar zelf proberen op te lossen:

	// Let's try to make a connection
	var request = Titanium.Network.createHTTPClient();
	
	request.onload = function() {
		// Because we're using digest authentication
		// we won't get anything here yet
		// but getting a 401 error instead
	};

	request.onerror = function(e) {
		Titanium.API.info("IN 'normal' ERROR: " + JSON.stringify(e));
		if (this.status == 401) {
			wwwAuthString = "" + this.getResponseHeader("WWW-Authenticate");
			// Get all www-Authenticate from the header
			var wwwAuthArray = Array();
			wwwAuthArray = wwwAuthString.split(",");
			var nonceArray = Array();
			// Get the nonce part
			nonce = "" + wwwAuthArray[2];
			// And get rid of nonce=
			nonceArray = nonce.split('"'); // split on "
			nonce = nonceArray[1]; 
			Ti.API.info('nonce = ' + nonce);
			
			// And try again
			var req2 = Titanium.Network.createHTTPClient();
			req2.onload = function(e) {
				alert("SUCCES!: " + JSON.stringify(e));
				Titanium.API.info("In success mode: " + this.responseText);
				// DO SOME OTHER STUFF	
			};
			req2.onerror = function(e) {
				alert("ERROR req2 " + e.error);
			}
			req2.setTimeout(10);
			req2.setRequestHeader("Content-Type","application/json");
			// open the client
			req2.open('GET', 'http://host.tld/path');
			// Populate all vars for digest authentication
			var realm = "REST API";
			var uri = "/path";
			var qop = "auth";
			var nc = '00000002'; // This shouldn't be a fixed value
			var cnonce = "0a4f113b"; // Idem ditto
			var A1 = Ti.Utils.md5HexDigest('username' + ':' + realm + 'password');
			var A2 = Ti.Utils.md5HexDigest('GET'+':'+ uri);
			var resp = Ti.Utils.md5HexDigest(A1 + ':' + nonce + ':' + nc + ':' + cnonce + ':' + qop + ':' + A2 );
			// Add authentication'
			var authstr = 'Digest ' + resp; 
			req2.setRequestHeader('Authorization', authstr);
			// send the data
			req2.send();
		}
	};
	
	request.setTimeout(10);
	request.setRequestHeader("Content-Type","application/json");
	// open the client
	request.open('GET', 'http://host.tld/path');
	// send the data
	request.send();

Ik ben er in geslaagd data van de server terug te krijgen die noodzakelijk is voor digest authentication, maar wanneer ik die data naar de server terugstuur loopt het mis en krijg ik alsnog een error. Moest je toevallig een oplossing hiervoor hebben of deze code verder uitpluizen: Let me know 😉