Programma overzicht

Keynote - High Gene Fork Ode
Curbralan Ltd

Language matters. How you use it makes a difference to the comprehensibility of the idea you are communicating, as well as the substance of the idea itself. This is as true of code as it is of natural language. The fact that it executes is only part of a programmer's challenge. The real art is in writing code that, in addition to being correct, is comprehensible, sufficient, changeable when change is needed and pleasing to read.

Instead, we find that much code is verbose, overly complicated, unnecessary or just plain confused. Sometimes it starts out that way, but often it becomes that way through the accumulation of small changes or misunderstandings. Concern for code hygiene is not just an idle matter of aesthetics: it is a question of development sustainability. Accidental complexity in code can become a major source of friction, scaring away deadlines, programmers and finance alike.

It's time to put the "soft" back into "software" and understand the importance and practice of refactoring in the day-to-day rhythm of programming.


GUI development met wxGlade
Squirrel Consultancy

wxWidgets (http://wxwidgets.org) is een uitgebreide bibliotheek grafische widgets waarmee op een platform onafhankelijke manier user interfaces kunnen worden gebouwd. Voor toepassingsprogramma's vormt wxWidgets een abstractie laag tussen de software en de actuele implementatie van de widgets --bijvoorbeeld met Motif, GTK of 'native' Windows.

Het bouwen van een GUI met welke bibliotheek van widgets dan ook is een erg tijdrovende klus. Voor de wxWidgets is daarom de tool wxGlade ontwikkeld. Met deze tool wordt het tijdrovende werk van het GUI bouwen voor een groot deel uit handen genomen. wxGlade kan code genereren voor C/C++ programma's, Perl en Python.

Deze presentatie vormt een inleiding in het gebruik van wxGlade en zal allerlei facetten van het bouwen van GUIs belichten. Uiteraard met 'live' demo.


AJAX: hot of hype?
Loco (Loohuis Consulting)

Een van de trends in web design dit jaar is AJAX, kort voor Asynchronous Javascript And XML, dat in webapplicaties wordt gebruikt om de responsiviteit van die applicaties te verbeteren. Alleen de term AJAX is nieuw, de technologie erachter bestaat al langer. AJAX is namelijk een concept dat bestaat uit meerdere componenten: een interface in (X)HTML en CSS, die door middel van het DOM met JavaScript wordt gemanipuleerd. De communicatie met de server wordt ook vanuit JavaScript gedaan, met XMLHttpRequest, typisch in de vorm van XML, hoewel andere dataformaten ook voorkomen.

In plaats van bij elke handeling een nieuwe pagina van de server op te halen, wordt alleen de relevante informatie naar de server gestuurd, en het resultaat in de bestaande pagina verwerkt. Het gevolg is een grotere continuiteit voor de gebruiker, en de mogelijkheid om de belasting van de server te verminderen en te verschuiven naar de client. Doordat alleen bestaande technologie wordt gebruikt is AJAX direct toepasbaar, en te gebruiken op alle courante platforms. De verschillen met gangbare webapplicaties zijn er alleen op applicatieniveau. Prominente toepassingen van AJAX zijn Gmail en Google Maps.


Introducing Ruby on Rails for systemadministration
WUR

The Ruby language (born 1995) is mostly the brainchild of Japanese Matz who has made it a point of creating a language based on the 'principle of least surprise' while incorporating the best of Smalltalk, Lisp, Perl, etc.

Rails (2004) is a consolidation of good ideas found in frameworks like Zope and J2EE, combined with a simple, thought out, API. Throw in Ruby, a language that is easy to use and read. In fact Dave Thomas (one of the pragmaticprogrammers, remember?) writes 'I think Rails may well be the framework to break Ruby into the mainstream'. It takes less to write an application in Rails than writing configuration XML for other systems.

My talk should act as a quick introduction to the power and simplicity of Ruby, as well as showing the Rails framework - an tool which helps hyper-productivity in web applications design. Now we have a tool which can help systemadministrators offer easy interfaces to Joe User without having to resort to CGI hacking or the overheads of a JAVA J2EE application.

I'll show how we build a web application for systemadministration using Rails and Cfruby (a library for systemadministration, with Cfengine-like features, developed by David Powers and myself). You don't have to understand Ruby to attend, as long as you like scripting.


Gambas Almost Means BASIC!
-

  • What is Gambas?
    A short introduction that explains with a few slides what Gambas is exactly.
  • Why Writing Yet Another Language?
    One of the stupid frequently asked questions :-)
  • Language Description
    A description of each part of the Gambas BASIC language, with some insistance on the main unusal and interested features.
  • The Gambas Components
    Gambas is an extensible language.
    A brief description on each Gambas component.
    Gambas components can be written in C/C++ or directly in Gambas.
  • The Future Of Gambas
    The current state of the development version.
    The next development environment.
    The roadmap for the next century :-)
  • Conclusion
    One question and its answer to conclude.


Teach your computer Thai (tools voor taal)
Hogeschool van Utrecht

In deze lezing wordt beschreven hoe UNIX tools zijn ingezet bij het maken van twee woordenboeken, te weten Thai-Nederlands en Nederlands-Thai. Deze woordenboeken zijn op een UNIX platform ingevoerd en vormgegeven. De postscript output is aangeleverd bij de drukker.

Na een korte inleiding over de Thaise taal en het Thaise schrift worden de op te lossen problemen geïnventariseerd.

Hoe ga ik om met het Thaise schrift?
Hoe sorteer ik Thai met sort?
Hoe genereer ik uit een platte database TeX input voor de uiteindelijke opmaak?

De gebruikte tools zijn de bekende UNIX tools als sed, awk, sort en grep. Voor de opmaaktaal is TeX gebruikt. Om de computer zoveel mogelijk het saaie werk te laten doen is een tool tyct (= Teach Your Computer Thai) ontwikkeld om vanuit het Thaise schrift een fonetische weergave van de uitspraak inclusief de voor de Thaise taal belangrijke tonen te genereren. Deze tool is gemaakt met C en lex. In de voordracht zal beschreven worden hoe een en ander werkt. Ook de keuze voor UNIX en TeX zal onderbouwd worden.


Coding standards and unit testing--Why bother?
Parasoft

Many developers think that the industry "best practices" of coding standards and unit testing are a waste of time: They require additional effort, but they don't seem to make your life any easier, or your code any better. This is not surprising.

This session explains how developers can apply coding standards and unit testing to improve their code and prevent the number of problems they need to identify, diagnose and fix over the course of the project. The first half teaches you how to apply coding standards to prevent errors related to code functionality, security and performance. The second part focuses on how you can extend traditional unit testing to expose reliability problems that could lead to instability, unexpected results or even crashes or security vulnerabilities. We will also discuss how these test cases can be leveraged to build a project-wide automated regression system that runs in the background each night and immediately alerts the team when code modifications or additions break previously verified functionality.


Python aan de lopende band
X support

Een klant klopte bij ons aan met het volgende probleem: Hij heeft een lopende band waarop 100 pakjes per minuut langskomen, 2 camera's erboven, en een bandcontroller die communiceert (TCP/IP) welk pakje dit is. Iedere camera fotografeert ieder pakje (10Mb bitmap). Per pakje moet de barcode bepaald worden, het plaatje afgesneden worden tot alleen het pakje, en naar jpeg geconverteerd worden. Barcode en jpeg moeten met het nummer van het pakje teruggestuurd worden. De controlerende server is een dual processor Windows server met speciale camera hardware.

De verschillende basis-blokken zijn simpel, een pagina C code om bv. een camera aan te sturen en een plaatje terug te krijgen.

Het matchen van het plaatje met het pakje is fuzzy (onbekend TCP delay). Er is een cascade van barcode readers, zodat het aantal pakjes waarop een barcode gevonden is, zeer groot is. De real-time eisen impliceren dat de applicatie multi-threading is.

Om van de basis-blokken een goedwerkend programma te maken, hebben we een Python programma gemaakt dat als Windows service draait. De data-intensieve delen worden via extensies in C uitgevoerd.

Het programma voldoet aan de eisen, met name de snelheid van verwerking is goed.


Schip aan de horizon!
AT Computing

Een nieuwe versie van Perl gloort aan de horizon. Nee, niet 5.10, maar Perl6! Al geruime tijd wordt er nagedacht over de tekortkomingen van Perl5 en dat heeft geleid tot een min of meer afgeronde specificatie van Perl6.

Inmiddels is een eerste prototype-implementatie beschikbaar, die uiteindelijk zal moeten leiden tot een echte Perl6-compiler.

Een belangrijk punt is dat Perl6 niet strict backwards compatible zal zijn met Perl5. Je zou kunnen zeggen: het is wel hetzelfde merk, maar een ander model.

In dit verhaal zullen we kijken naar verschillen en overkomsten met Perl5.

Daarnaast zullen we laten zien hoe, in de overgangsperiode, Perl6 en Perl5 door elkaar gebruik kan worden.

Parrot, het beoogde backend voor Perl6, zal in dit verhaal geen of weinig aandacht krijgen.


Tutorial: Dynamic Tracing (DTrace)
Sun

Met de introductie van Dynamic Tracing (DTrace) in Solaris 10 zijn de mogelijkheden om het gedrag van het systeem en applicaties te bekijken en analyseren enorm toegenomen. DTrace maakt het mogelijk om op simpele wijze de voorheen moeilijke vragen te beantwoorden. Vragen zoals "welk proces veroorzaakt de IO op dit filesysteem?" of "op welke file vindt de meeste IO plaats en door wie?" kunnen met DTrace eenvoudig beantwoord worden.

In deze tutorial wordt een overzicht gegeven van DTrace. Hierbij wordt ingegaan op het doel van DTrace, de architectuur van het DTrace framework, de scripttaal D en de diverse providers die beschikbaar zijn. Aan de hand van een aantal voorbeelden zal getoond worden hoe DTrace ingezet kan worden in de dagelijkse praktijk. De tutorial is bedoeld voor zowel systeem beheerders als ontwikkelaars. Diepgaande kennis van Solaris internals is niet vereist, maar enige kennis van Solaris en C is een voordeel.


Python voor Mac development
X|support

Python is een ideale taal voor software ontwikkeling op de Mac door de combinatie van een uitgebreide standaard bibliotheek en eenvoudige toegang tot Mac specifieke technologien als Cocoa, Carbon en AppleScript.

Doordat het object model van Objective-C goed aansluit op dat van Python zijn de Cocoa frameworks bijna naadloos te gebruiken van object georienteerde Python code. Om Cocoa te gebruiken vanuit Python wordt gebruik gemaakt van PyObjC.

Naast het schrijven van GUIs kunnen de Cocoa libraries ook gebruikt worden voor andere projecten, zoals een een web-frontend voor Spotlight. Het is zelf mogelijk om Python te gebruiken voor het schrijven van plugins voor Cocoa applicaties, zoals bijvoorbeeld Safari en Mail.

Een aantal voorbeelden van het gebruik van Python op de Mac zullen getoond worden.


Een papegaai voor iedereen
MARKOV Solutions

Vijf jaar geleden kwam een groepje Perl fanaten op het idee om nog één keer verbetering in de taal door te voeren. Dit project liep enorm uit de hand, omdat er erg veel nieuwe ideeen naar boven kwamen. Zo veel dat Perl6, als opvolger van Perl5, vele (mooie) nieuwe features krijgt.

Meteen werd besloten op te proberen de virtuele machine (die de basis vormt van de meeste programmeertalen) voor Perl6 als los project te implementeren onder de naam Parrot. Java's virtuele machine JVM is niet geschikt voor dynamische talen, en ook .NET kan daar niet mee overweg, dus werd een nieuwe systeem van de bodem af opgebouwd.

Parrot is zeer krachtig, met garbage collection, verschillende vormen van parallelisme en intelligente bouwstenen. Parrot maakt de koppeling mogelijk van programma's en bibliotheken geschreven in verschillende talen. Parrot kan ook draaien in een browser.

Er zijn al een aantal implementaties van illustere talen als Befunge, Brainfuck en Forth, maar ook Tcl, Ruby, Python en Scheme zijn al voor een deel opnieuw geimplementeerd op de Parrot Virtual Machine. Alleen de Parrot heeft platform-afhankelijke delen, waardoor een nieuwe taal meteen overal beschikbaar is. Perl6 is het moeilijkst, maar niet ver weg.


Qt and KDE application development using Python
KDE NL

An introduction to what GUI application development with the Qt and KDE libraries and the Python programming language has to offer. Qt and KDE development has traditionally been based around C++, although it has been possible for quite some time now to use other languages. This talk discusses the advantages of using Python, what is possible, and when best to use it over other languages. This talk is aimed at people who want to begin programming KDE applications but don't know how to start, and also at seasoned C++ hackers.


A Tour of TR1
Curbralan Ltd

The 1998 C++ standard included an extensive library, much of which could be considered new to C++ developers. In preparation for the next standard, the standardisation committee has been working on an interim technical report, TR1, for proposed extensions to the library. Most of TR1 is derived from libraries and experience in the popular, peer-reviewed and freely available Boost libraries. There is a good chance that the features defined in TR1 will appear in the next standard, and many C++ distributions have started making TR1 library components available. This session offers a quick tour of the key features of TR1 and highlight how C++ programmers will be able to take advantage of them.


Tutorial: Relationele databases met Perl
Squirrel Consultancy

De Perl DBI module maakt het mogelijk op een database-onafhankelijke manier te werken met verschillende relationele databases. De tutorial "Relationele databases met Perl" behandelt de basisbeginselen van relationele databases, SQL, en het gebruik ervan middels de DBI module.


SIG/BoF sessies
NLUUG

Het NLUUG bestuur en de programmacommssie stellen groepen mensen met een gemeenschappelijk interesse in de gelegenheid een Special Interest Group (SIG) te vormen of een Birds-of-a-Feather (BoF) sessie te beleggen.

Heeft u interesse? Neem contact op met het NLUUG bureau.


Bridging Python to C++ - and vice-versa
CWI

I found myself in need of good access to C++ functionality from Python. By "good" I mean: more than simply being able to call C++ routines or methods, but also the ability to subclass C++ baseclasses in Python, and subclass Python baseclasses in C++, similar to the functionality PyObjC provides when you need interoperability between Python and Objective-C.

The objective is tackled by extending the standard (but little known:-) bgen bridge to be able to parse C++ headers, teaching it about C++ objects, inheritance and callbacks and exposing the result as a Python extension module.

There are various other solutions that allow you to automatically generate Python interfaces to C++ libraries, but I could not find any that I really liked: most are lacking in functionality, such as bidirectional subclassing, some are bloatware, some are ugly. So in good open source tradition I decided to try and do better.

At the time of writing this abstract this is still work in progress, so the talk will focus more on the solutions chosen than on the actual tool, which is expected that the tool itself will be in the next Python distribution. For this reason the talk is geared more towards people who write extension modules and who are interested in how Python works internally than towards general Python users.



Last modified: Wed, 21 Sep 2005 04:05:55 +0200