Visual Dialogscript

JS-VDS

Grenzen tussen webapplicaties en normale computerapplicaties vervagen. Hierdoor is het ook nodig om de belevingswijze van applicaties aan te passen. Echter, soms is het toch handig om webapplicaties te kunnen gebruiken alsof het programma’s zijn die op de computer zelf staan. Normale websites bestaan vaak uit PHP en enkele regels Javascript om de interactie tussen de browser en de server mogelijk te maken.
Veel programmeertalen zouden ontoereikend zijn om op het internet gebruikt te kunnen worden. Hiervoor zijn ze te ingewikkeld of missen ze juist essentiële dingen. Visual Dialogscript daarintegen is een programmeertaal waarbij met enkele regels code al complete, complexe programma’s gemaakt kunnen worden. Hierom heb ik besloten om in Javascript een interpreter te maken die Visual Dialogscript code uit kan voeren. Met deze combinatie is het nu een kwestie van enkele minuten om een complete webapplicatie te bouwen die niet onder doet aan de look-and-feel van normale programma’s op de computer. Een ander groot voordeel is dat de applicaties cross-platform zijn; ze werken dus op elk type computer precies hetzelfde. Dit stelt programmeurs dus in staat om de klant precies zo te bedienen als dat ze gewend zijn.

Application Access Control

Eén van de nieuwe vooruitstrevende verbeteringen aan Windows Vista, is toch wel de User Account Control. Hiermee worden beperkingen opgelegd aan wat gebruikers kunnen aanpassen aan bestanden en het register om zo te voorkomen dat spyware en virussen zonder toestemming systeeminstellingen veranderen. Alhoewel dit in een simpele staat onder Windows XP ook al kon door het aanmaken van gebruikers als “Normale gebruiker” en niet als “Administrator”, zaten er daar toch nog wel wat kleine fouten in de implementatie.
Het door mij gemaakte Application Access Control vangt deze foutjes op. Zodra het is opgestart, houdt het een database bij van alle applicaties die de gebruiker toestemming heeft gegeven om op te mogen starten. Zodra een virus of spyware wil opstarten, krijgt de gebruiker een melding op zijn of haar scherm met daarin gegevens over het programma. Het is dan aan de gebruiker om te beslissen of het programma gestart mag worden of niet. Om te voorkomen dat het simpelweg op “Allow” klikken tot gevolg heeft dat ongewenste programma’s altijd opgestart worden, komt deze melding de eerste drie maal dat een programma start te voorschijn. De gebruiker hoeft alleen geïnstrueerd te worden om simpelweg alleen programma’s toe te staan die ze zelf hebben opgestart. Op deze manier kan Windows XP nog lange tijd gebruikt worden op computers die Vista nog niet aan kunnen.

YouTube Player

Om lekker filmpjes te kunnen kijken op internet hoef je je handen tegenwoordig niet meer om te draaien. Even naar YouTube browsen, wat zoekwoorden invullen en een hele nieuwe wereld gaat voor je open.
Helaas is het een komen en gaan van nieuwe clips en het bijhouden van favorieten is dan ook een hele klus. Heb je net een hele lijst gemaakt, is de helft alweer offline gehaald. Deze YouTube Player download echter de filmpjes die je aangeeft direct naar je harde schijf. Hierdoor zijn ze altijd beschikbaar. Filmpjes kunnen geselecteerd worden door de ingebouwde browser die gelijk alle overbodige zaken van de overzichten af haalt (zoals banners, nieuwsberichten, etcetera). Op deze wijze kan je je eigen persoonlijke videocollectie aanleggen die je kunt blíjven gebruiken.
Het kan zijn dat deze applicatie niet meer werkt doordat YouTube zijn site regelmatig aanpast. Let op dat voor het afspelen van filmpjes van YouTube nog wel de goede codecs nodig hebt, zoals K-Lite Codec Pack.

NetTV

Steeds vaker zijn televisieprogramma’s live te volgen op internet. Sommige internetproviders broadcasten zelfs hun hele zenderaanbod live. Omdat mijn provider dat ook doet en ik graag TV kijk tijdens het computeren ben ik dus in het “IPTV” gebeuren gerold. Na een tijdje gewoon met Windows Media Player naar de streams gekeken te hebben, begon het me steeds meer te irriteren dat je WMP niet boven andere vensters kunt plaatsen zonder dat die steeds verdwijnt. Ook was het niet mogelijk om een lijst met alle TV zenders te maken.
Van het één kwam het ander, en zo maakte ik dus mijn eigen IPTV speler genaamd NetTV. Standaard blijft het programma boven alle andere geopende vensters staan, krijg je netjes te zien hoe ver de zender die je wilt bekijken is met bufferen (vooruitladen) en kan je makkelijk wisselen tussen zenders door de zenderlijst op te vragen en gewoon aan te klikken wat je wilt zien. Ook even snel zien wát er nu precies bezig is op TV is simpel, er is namelijk ook een knopje waarmee je zó naar de website van het TV station dat op dat moment aan staat kunt gaan.

Taskbar Projects

“Tabbed” is in. We doen aan “tabbed webbrowsen”, “tabbed tekstverwerken” en zelfs MSN heeft tabbladen. Waarom gebruikt Windows ze dan niet standaard bij de taakbalk? Je kunt wel knoppen per applicatie groeperen, maar je wilt ook wel eens per groep programma’s kunnen sorteren.
Taskbar Projects kan dit. Het bestaat uit in totaal zes tabbladen waar je zelf een tekst op kunt zetten en waaraan je programma’s kunt toewijzen. Ben je bijvoorbeeld met een werkstuk bezig, maak je een tabblad werkstuk en kieper je daar alle programma’s in die met dat werkstuk te maken hebben. Om niet zo afgeleid te worden door vrienden, stop je MSN en ICQ ook weer in een eigen tabblad. Windows Media Player, Kazaa en je Mp3 map stop je vervolgens in de muziek tab, enzovoorts. De tabbladen verbergen zich automatisch als je met andere dingen bezig bent en komen weer tevoorschijn zodra je met je muis aanstalte maakt om op een knop op je taakbalk te klikken. Zo maak je dus met een kleine aanpassing extra ruimte en kan je dus veel makkelijker switchen tussen programma’s.
Taskbar Projects werkt zowel op Windows XP als op Windows Vista, beide met bijbehorende visuele thema’s.

Wikipedia

Wikipedia, wie kent het niet tegenwoordig. Dé plek om informatie te vinden over wat je maar kunt verzinnen. Ik gebruik de online encyclopedie dan ook regelmatig. En daar komt ook gelijk mijn reden voor dit programma. Als je de Nederlandse versie van Wikipedia wilt gebruiken, krijg je eerst altijd een voorpagina waarin je je taal en dialect moet kiezen, wat niet automatisch wordt opgeslagen, het moet dus elke keer opnieuw. Echt snel is het dus niet op deze manier. Een ander punt dat ik jammer vind aan Wikipedia, is de menubalk aan de linker kant die zoveel ruimte inneemt met functies die je toch nooit gebruikt als je even snel iets wilt opzoeken.
Om verlost te zijn van deze problemen, heb ik een Wikipedia browser gemaakt. Het programma nestelt zich tijdens het opstarten automatisch in het systeemvak naast de klok, waardoor je het met één keer klikken kunt openen. Als je zoekt naar resultaten worden van tevoren netjes alle menu’s weggehaald, net als de [bewerk] links. Ook worden de bezochte pagina’s en ingetypte zoekwoorden automatisch onthouden, zodat je snel terug kunt bladeren naar een eerder bezochte pagina.

LinkSearch

Iedereen kent het wel. Wil je even snel een programma starten, je klikt op Start, opent Alle programma’s zo, wacht netjes tot alles is opgeklapt en kan het programma dan niet meer vinden. Misschien omdat de menu’s niet netjes gesorteerd zijn, of misschien omdat Windows de snelkoppeling van het programma dat je zoekt heeft verborgen omdat je ‘m al te lang niet meer hebt gebruikt.
Met LinkSearch is dat probleem voorbij. Je hoeft niet meer zelf door hele menu’s te zoeken maar LinkSearch doet het voor je. Het programma start automatisch met Windows mee op en wordt geactiveerd als je Ctrl, Shift en A tegelijk indrukt. Als je nu (een deel van) de naam van het programma dat je wilt openen typt, zie je vanzelf in een lijst alle programma’s waar die naam in voor komt. Simpel aanklikken of er met de pijltjestoetsen naartoe gaan en het programma wordt gestart.

Block PC

Deze applicatie heb ik gemaakt voor een programmeerwedstrijd waar het goed was voor de tweede plaats. Block PC is eigenlijk hetzelfde als het normaal locken van je computer zoals je doet door op Windowsvlaggetje+L te drukken. Het verschil zit ‘m erin dat Block PC bij elke poging tot inloggen een foto maakt met een aangesloten webcam. Op deze manier kan je zien of terwijl je weg was, iemand heeft geprobeerd in te loggen.
Zowel bij een goede als een verkeerde inlogpoging wordt een foto gemaakt. Als je het goede wachtwoord hebt ingevuld krijg je een overzichtscherm te zien met foto’s van de laatste 9 inlogpogingen. Je ziet het dus zo als iemand heeft geprobeerd met je computer te rommelen.

Batch scanner

Om in plaats van losse pagina’s in te scannen en dan te zitten met tientallen JPG bestandjes, kwam ik op het idee om ingescande pagina’s automatisch te bundelen. Het enige bestandsformaat dat hiervoor in aanmerking kwam, was PDF. En zo flanste ik dus op een regenachtige zondagmiddag een Batch scan applicatie in elkaar.
Een paar simpele drukken op de knop, even geduld tijdens het scannen en er rolt zó een keurig PDF bestandje uit met een digitale kopie van een boek, werkstuk, fotoalbum of verslag.

Basic OCR

Optical Character Recognition. Al jarenlang wordt mensen de belofte verteld dat het allemaal zo handig is. Je pakt een boek uit de bibliotheek, legt het op je scanner en binnen 10 seconden krijg je dezelfde tekst als Word documentje gepresenteerd. De meeste scanners krijgen ook gratis OCR software meegeleverd. Na installatie blijkt alleen dat de software tot hooguit 95% nauwkeurig is. Je bent dan ook vaak langer bezig met het verbeteren van fouten dan dat je tijdswinst hebt met het inscannen ten opzichte van alles zelf overtypen.
Met handgeschreven teksten is het helemaal aanknoeien. Er zíjn wel een paar OCR applicaties die handgeschreven tekst aankunnen, maar daarvoor moet je vaak extra groot schrijven, precies dezelfde letters en streepjes gebruiken en je moet ze vaak dagen lang “trainen” om je handschrift te herkennen. Omdat ik vaak dingen bedenk die ik uitgetypt op de computer wil hebben terwijl ik geen computer bij me in de buurt heb, heb ik mijn eigen OCR engine voor handgeschreven tekst ontworpen.
Toen ik na ging denken waarom bestaande OCR applicaties niet goed werken, kwam ik tot de conclusie dat dit is omdat er véél te veel tekens zijn die moeten worden herkend. Niet alleen alle 26 letters van het alfabet moeten gelezen worden, maar ook toevoegingen zoals é, è, ê en ë. Om dit allemaal te voorkomen in mijn OCR engine, heb ik besloten maar een beperkt aantal tekens te gebruiken, acht in totaal. Door deze tekens te vertalen naar getallen zodra ze zijn ingescand, is het daarna mogelijk om per combinatie van twee tekens (elk teken is overigens met één penbeweging op papier te zetten) er een letter of cijfer aan toe te wijzen. Op die manier kan je dus met 8 simpele tekens 64 verschillende letters en cijfers schrijven. Omdat er ook maar acht tekens gebruikt worden die zeer van elkaar verschillen, is er een herkenningsratio van 100%!

SPL

Sjoerd’s Programming Language, mijn eigen poging om een scripttaal te maken. Opzich werkte het heel goed, maar omdat er al zoveel programmeertalen zijn ben ik ermee gestopt. Het ontwikkelen en implementeren van alle functies en commando’s die ik erin wilde hebben zou namelijk zoveel tijd in beslag nemen en (voor mezelf) weinig voordeel opleveren boven programmeertalen als Visual Dialogscript en Visual Basic aangezien ik die allebei goed beheers.
SPL kende twee soorten instructies, functies en commando’s. Commando’s voeren iets uit en functies geven een waarde terug van bijvoorbeeld een berekening. Onderstaande commando’s en functies konden worden gebruikt met SPL:

Commando's

messagebox [tekst]
alert [tekst]
title [nieuwe titel]
if / else / end
while / wend
goto [naam label]
exit

Functies

#chr([nummer])
#asc([teken])
#add([nummer1],[nummer2],[nummer3],{enzovoorts})
#diff([nummer1],[nummer2],[nummer3],{enzovoorts})
#multiply([nummer1],[nummer2],[nummer3],{enzovoorts})
#division([nummer1],[nummer2],[nummer3],{enzovoorts})
#substring([tekst],[begin],[einde])
#input([tekst],[titel],[standaard waarde])
#title()
#time( h – m – s)
#equal([waarde1],[waarde2])
#unequal([waarde1],[waarde2])
#not([boolean waarde])
Om te springen tussen stukken programmeercode, heb ik zogenaamde labels gebruikt. Een label is te herkennen aan een tekst dat tussen < en > staat. Variabelen kunnen worden gebruikt door voor een woord een dollarteken $ te plaatsen.
De SPL interpreter is gemaakt in Visual Basic. De reden hiervoor is dat Visual Basic beschikking heeft over arrays die ik heb gebruikt om variabelen in op te slaan. Ook is het voor Visual Basic applicaties vaak niet nodig om extra bestanden mee te leveren aan de gebruiker, waardoor de gecompliceerde SPL scripts slechts 10 KB groot zijn.
Om het voor de gebruiker makkelijk te maken én houden, is er ook een kleine IDE ontwikkelt in Visual Dialogscript. Met deze IDE kunnen bestanden geopend, gecompileerd en uitgevoerd worden zonder dat hiervoor externe commando’s ingetypt hoeven te worden.

COD-Tracker

Online multiplayer spellen zijn vaak leuk om te doen. Veel voor mensen is de lol er alleen snel vanaf als ze niet bij kunnen houden hóe ze spelen. Ook willen sommigen pochen met hoe goed ze wel niet zijn. Bij een aantal spellen, zoals America’s Army: Special Forces, worden deze gegevens automatisch bijgehouden. Voor het spel Call of Duty bestond deze mogelijkheid echter nog niet. Met COD-Tracker bracht ik hier verandering in.
COD-Tracker bestaat uit een website en een applicatie die mensen die Call of Duty speelden moesten installeren. Deze applicatie werd automatisch geactiveerd als je Call of Duty opstartte en stuurde dan vanzelf statistieken door van hoe het de speler verging. Installeren van het programma was simpel. Men downloadde het installatiebestand, opende het, klikte een aantal maal op Volgende, vulde zijn of haar login gegevens van de COD-Tracker website in (of registreerde zich) en COD-Tracker werd geactiveerd.
De statistieken die door COD-Tracker werden verzameld werden automatisch geupload naar de COD-Tracker website. Hier werd het verder verwerkt, werden bepaalde killratio’s uitgerekend en werd netjes weergegeven dat de speler online was. Andere spelers en belangstellenden konden al deze gegevens live opvragen en zo de vorderingen van hun vrienden bijhouden. Het was zelfs mogelijk om met één klik op een link rechtstreeks Call of Duty op te starten en naar dezelfde server te gaan als waar vrienden speelden. Ook was het mogelijk voor mensen om hun statistieken op een eigen avatar neer te zetten, om deze zo op elk forum aan mensen te kunnen tonen.
Met het uitkomen van Call of Duty 2 is het ontwikkelen van COD-Tracker stopgezet omdat er nog maar weinig animo voor de eerste versie was. Daarnaast was het door bugs in de Call of Duty 2 3D engine niet meer mogelijk om degelijke statistieken te verzamelen. COD-Tracker is 10 maanden online geweest en heeft in deze tijd rond de 18.000 mensen van statistieken voorzien. Daarnaast heeft de website in deze periode ruim 500.000 pageviews gehad wat neerkomt op ongeveer 1800 pageviews per dag. Een doorslaand succes dus.

Forum Check-up Tool

Voor de tijd dat RSS en XML geaccepteerde standaarden werden om informatie van fora, weblogs en websites te distribueren was er al wel de noodzaak om goed op de hoogte te blijven van ontwikkelingen. Eén oplossing was alle fora die je bezocht openen met je browser zodra je je computer opstartte en dan elke 10 minuten op de F5 knop te drukken. Een andere oplossing was de door mij gemaakte Forum Check-up Tool te installeren.
De Forum Check-up Tool was een klein programma’tje dat automatisch in de gaten hield wanneer er op een forum een nieuw bericht werd geplaatst. Als er een nieuw bericht was gevonden, werd dit aan de gebruiker gemeld door middel van een popup zoals MSN Messenger dat ook doet bij nieuw ontvangen berichten.
Forum Check-up Tool was zowel een oplossing voor gebruikers, als voor server en forumbeheerders. Voor de gebruikers was het gemakkelijke gebruik één van de grote voordelen. Voor serverbeheerders was het vooral het lagere dataverbruik dat interessant was. Het programma deed namelijk één maal per 10 minuten een aanvraag bij de server om na te gaan of er nieuwe berichten waren. Dit kostte slechts 90 bytes, tegen de 20 KB (exclusief het laden van plaatjes) dat een normaal bezoek van een gebruiker aan een forum kost. Voor forumbeheerders was het grote voordeel dat bezoekers vaker terugkwamen en dat men sneller op geplaatste berichten reageerde.
Het programma is in anderhalf jaar tijd door ruim 50.000 mensen gedownload, geïnstalleerd en gebruikt. Vooral het verspreiden van het programma in samenwerking met het reeds opgeheven YourForum heeft het gebruik een flinke boost gegeven.