Our articles are separated by topic. We have listed 6 topic sections. Others are available through the search engine.

Quick-Jump to Sections:

  1. Software Consultancy - Helping you build better software. We focus on speed, usability, and ease of maintenance.
  2. Our Software Products and Articles. We share what we learned, to make your learning curve less steep.
  3. Failure Notes - UI and UX Horrors. A hall of shame for damaging mistakes in webdesign and other UI/UX problems.
  4. zjrJS - cross-device javascript library. A utility library to overcome browser and device differences. Open Source. Free. With a full test suite.
  5. Publizjr - Creates Web Pages. A PHP and file-based templating system. Open Source. Free.
  6. Musician and Conductor for Hire, Music Instruction and Compositions. Pricing and plans, samples and articles. Some free compositions available for download.

Software Consultancy

Helping you build better software.

- Helping you build better software.

- Where I worked, for whom, and what jobs I performed.

- Helping you discover what makes your users tick.

- Helping you optimise your web sites, web apps, games, databases, and integrated software solutions from front to back.

- Who knows how to determine and adjust scope, estimate budgets, prioritise and assign work break-downs, who can deal with off-shore development teams? Who can follow your entire project through to completion, and then sets up aftercare? Me.

- Praise from people that liked my services.

Our Software Products and Articles

We enjoy developing software, professionally as well as privately. Here we share what we learned and built for public use.

- Projects by A.E.Veltstra.

- What we have learned privately over the years.

- Opera Mini can do straights, italics, bolds, and multiple fonts on the same page. Here is the CSS that web designers can use.

- Like image sprites, sound sprites collect several distinct sounds into a single file, which reduces network lag while downloading.

- The script Google provides is slow, dangerous, and time-consuming, drawbacks that this better one overcomes.

- How to recognise common patterns and set up new ones. Process flow defines what steps a user (or data) and software take to achieve a goal.

- Speed up your website by providing a simple error response for images, video, audio, etc. This article looks at how to do so in htaccess.

- Requirements for software developers who work remotely to maintain a Sitecore-driven web site

- An insight into the mind of one application developer

- How we apply object-oriented programming patterns in javascript in our own products.

- Booooring... people falling asleep, not paying attention, playing with their phones... Fix it! Here's 4 tips.

- Why a UI/UX designer would also be interested in middleware software development and back-office software integration.

- an HTML5-version of the most popular video game ever.

- The size of a computer monitor and that of the windows it displays, affects a webbrowser's memory consumption. Research and conclusions.

- The way to battle bugs effectively, is to reduce the system complexity, and to train your programmers. If necessary, throw it out and start over. Be relentless.

- In the old days, we used cookies. Then along came MS Internet Explorer 5, introducing the userData behavior. Now we have HTML5 with localStorage. Why should we use it? Why shouldn't we use it? And can it be used across browsers?

- CSS 3 Media Queries can adjust CSS settings. For instance, one can make sections narrower or wider, or choose to hide them, depending on the window width and device type.

- Normally, when dividing any number by 0 (zero), computer applications throw an error. After all, multiplying any number with 0 returns 0, thus the opposite does not compute.

- Google Chrome is a new webbrowser built upon the same html rendering engine as Apple's Safari, namely WebKit. We reviewed its first public beta release. Here are our findings.

- A harmonica is a user interface (UI) element that allows a user to choose which part of a text they wish to see. The other parts then fold up. In this article: algorithm, examples, javascript code.

- Microsoft's flagship browser and Firefox 2 don't necessarily fail at HTML5... they simply fail at handling unrecognised doctypes altogether. How and why.

- We can add singletons in javascript using various methods. Which is best for what purpose, and why?

- It seems very hard for browsers to let the web author know, what the coordinates are where a click was registered. And each browser insists on doing things differently.

- A user-hating web browser like Safari or Chrome fails to incorporate alternate stylesheet switchers. Exploring the problem and solutions.

- Implement your own Social Media buttons, and have Google CSE show its search results on a new page, to speed up the load times of your webpage.

- Allowing a web app user to select multiple items on screen (like objects in a game or drawing app) proves harder than it seems. An exploration.

- If your vision is good, and you wish to escape the clutches of The Man and Fanboys, and are looking for a complete one-stop communication center, Opera is the way to go.

- Javascript speed in the webbrowser Opera 10 got reduced by a factor 3! Or has it? Cause and solution.

- When the image you wish to print can be given different background colours, draw them using Canvas drawing techniques. Cause and solution for that and related problems.

- Adding RSS 2.0 to your web site is so bloody easy no web site should do without a news feed. A list of sources.

- When we do need javascripts in our web pages, they shouldn't annoy the visitors.

- Feature detection determines what a browser can do. Why did MSIE 8 fail to fail the detection of the HTML5 canvas element?

- Social Media Marketing using psychology to increase participation

- Our section on practices that work in IA, a service we've been providing professionally since 1998.

- Avoid common pitfalls during product design and creation - learn from our own experience.

- An example for information architecture and functional design, based on our own PPS (Page Publication System), Publizjr.

- Content Strategy combines what project stakeholders want to publish with what the public wants to know, and figures out the best way to present it. Read how.

- Your software house needs a library of patterns too. Here's why.

- Focusing on Readable Formating, with practical application hints and explanations.

- How to format CSS to make it easy to read and maintain

- How to format Javascriot to make it easy to read and maintain

- How to format XSLT to make it easy to read and maintain

- Who wrote these guidelines and what made him an expert?

- A simple adjustment of their javascript code prevents pre-loading of their files, plus it increases compliance to the European Cookie Law.

- We use it. Should you? Decide for yourself.

- Sometimes there is no debugger, like on a mobile device like iPad (iOS5). Still you need to inspect an implementation. Use zjrJS.

- This "cookie" law was passed in May 2011. In preparation, we took some drastic measures. As a bonus, our web pages became a lot faster. Here's how.

- Javascript quality enhancement hasOwnProperty works on HTML elements in many a modern browser, but fails in Microsoft Internet Explorer 8.

- A task-based cheat sheet to zjrJS, the crossbrowser Javascript library.

- Creating Webpages like ΩJr does.

- How to play, some technical details, and feedback options.

- An example of the current status of 3D CSS styling of web pages, this game lets you move a ball through bars which can be pulled up to free more openings. Beware of gravity! Try and reach the golden cube. Webkit browsers like Google Chrome and Safari preferred at this moment.

- Examples of Programming Algorithms used by and for the ΩJr.Net.

- Why and how of Genetic Search Algorithms, plus a javascript implementation. The Genetic Search Algorithm is used to solve problems by computing a biological genetics approach, creating a survival of the fittest scenario.

- To establish whether or not a player is allowed to move to a next position in a game, path walking usually is the easiest to program, because all possibilities are known. This article describes 2 different path walkers, both programmed in javascript, for games on the ΩJr.Net.

- Showing off what current webkit-based browsers can do with pure CSS3, no VRML, no SVG, no Flash, no Silverlight. Movement of the ball powered by a small amount of Javascript.

- a Flash-Free version of Zynga Scramble, like Boggle, connected to Facebook.

- a Flash-Free word search game, like Boggle and Scramble, connected to Facebook.

- a Flash-Free word search game, like Boggle and Scramble, connected to Facebook, its dictionary filled with web mark-up terms.

- a Flash-Free word search game, like Boggle and Scramble, connected to Facebook, its dictionary filled with music terms.

- een Flash-vrij woordzoekspel, zoals Boggle en Scramble, verbonden met Facebook, met Nederlandse muziektermen.

- Documentation, Best Practices, and Selection Guides

- Pure CSS3, no VRML, no SVG, no Flash, no Silverlight. Movement of the ball powered by a small amount of Javascript.

- Javascripted search results: dynamic loading, sorting, and filtering (like Google CSE)

- Why replacing document.write() with node.appendChild() is a good idea

- Why to use html_accept_language to detect which language your visitors language prefer

- Simulating the human thought process by programming Yet Another Sudoku Solver

- Allowing for unlimited numbers of parameters in safe MySQL statements in PHP

- Generating circular charts (disc charts, ellipse charts, venn diagrams, pie charts) inside the browser using nothing but javascript, css, html, and a couple basic images.

- Scrolled paging, simple method. To prevent loading too much data into a web page, we split up the data into smaller sets called pages. This article provides one way of stepping through those pages.

- Now known as lightboxes. How to create and display modal dialogs looking like regular windows, using nothing but javascript.

- Breaking free from those pesky rectangles and showing your navigation in a circle. No plug-ins, no images required.

- How to use a bit of CSS and a bit of Javascript DHTML to create reusable and easily maintainable animations.

- Using old-style html (without CSS) to have an image repeated along the height of a table cell

- What is needed to show HTML objects in various browsers, test case to show what your current browser can and cannot.

- How to list names and numbers for built-in and custom enumerations

- How to execute unmanaged methods inside non-Net COM Dlls from within VB.Net, using as much managed code as possible, in run-time when the Dll itself is unknown.

- Overview of the web sites and applications we created and helped create.

- Ever wanted to create your own Post-It notes with your own texts, but did not know where or how? Try this!

- Variations as an antidote to all the rounded corners

- Helps solving Sumbrero 7 Puzzles. Tests whether your solution adds up.

- Helps solving Sumbrero 6 by 3 Puzzles. Tests whether your solution adds up.

- Examples for the mathematical puzzles known as Sumbrero 7 and Sumbrero 6x3.

- Microsoft SQL Server: shrink those log files well with this stored procedure

- Opera 9 baffles some of us continuously. Some of the mysteries are outlined in this article.

- The Indonesian game of Surakarta is much like Chess with Pawns only. We present a Flash Game Board, a description, and an on-line game board to play the game yourself.

- Use this code to retrieve the identification of the MSAccess user logged into the network.

- Use this custom function to detect the client's system language, to prevent errors caused by translated decimal separators.

- A padded iFrame element incorrectly overlaps other parts of its container, in the Opera 7 browser.

- One example of how to create a horizontal menu bar in a web page, using CSS and Javascript.

- Now known as CSS Sprites: why clipping regions have drawbacks and how to overcome them using moving view-ports. In 2004, when I wrote that article, I only knew the term "sprite" from antique games and a soft drink.

- Simulating a 3-dimensional space in a web page, cross-browser, advanced CSS.

- One method for creating pop-up menus meant for dynamic menu generating systems, using CSS only

- One method for creating pop-up menus meant for dynamic menu generating systems, using CSS only with a Javascript fallback for unhoverable browsers.

- The Opera browser for MacOS, version 6.03, had a rendering bug which showed itself when absolutely positioned elements and statically positioned elements were used on the same page.

- Most browsers have a rendering bug maming the width of table columns in case a width is set for a spanned column.

- Proof of concept showing that it is possible to use a background image as an image map. This version uses pure css.

- Proof of concept showing that it is possible to use a background image as an image map. This version uses a table.

- Automated recognition of the data type of a table field in MS Access

- One way of changing the font size using in-page font control

- One method of creating a date picker that works in most browsers.

- How to parse Querystrings into Associative Arrays using nothing but Javascript

- Why scrolling is useful, though many deem it a curse.

- One method for imitating the Apple Glass Button design in a web page.

- E-mail crawlers suck and cause spam. This article shows how Javascript can be used to keep your e-mail address a secret, and avoid spam.

- The VBA behind MSAcc97 lacks some implementations that ease the life of a programmer. Two of these are Split and Join, which can be found in later versions. Here is a way to build them yourself.

- (In Dutch.) Ever thought of making your web site look like a library? Here is one way of achieving just that. Usability experts loathe it!

- (In Dutch.) Using hidden frames to store shopping cart information on the client, this web store example saves the server lots of memory.

- Instruction to the game I rewrote in Javascript. Single-player web game.

- If you find yourself wrestling with the display and storage of dates in varying notational formats, forget about the date and only work with the double used by MS Access to store it.

- How to make Access remember which parameters you bound to a query in a form. It is not as easy as it may seem!

- Etiquette for how a well-behaved application should work.

- (in Dutch) How automated code generators (Programming and Design Environments) lead to lazy developers and subsequently to the discrimation of improved methods and applications.

- How to retrieve a list of records from a database (in this case MS Access), have a web visitor choose from that list and show the selected record on the same web page.

- How to minimize maintenance time for web sites by using menus included with Javascript, with a fall-back for browsers that have no support for Javascript or have it disabled.

Failure Notes - UI Horrors and UX Horrors

Hall of Shame for misbehaving applications, products, services, and their management. Showcase of damaging mistakes in web design, user interfaces, user experience, and usability.

- Notes: multi-lingual overview of our articles

- Who is A.E.Veltstra and what makes him an authority?

- Based on daily usability problems and feedback from our fans.

- And it really should not. The link from a validation email should validate immediately, without requiring the additional action of a log-on.

- Potentially causing a crash of not only the Twitter Client, but also the Mobile Device.

- Unfortunate CSS decisions forcing visitors to put in more effort to achieve simple tasks.

- 20 Years of building websites and a keen sense of usability allow us to improve the content quality and structure of most websites.

- They force you to log in daily, and then make it impossible to log in, though device discrimination is banned by law.

- 33% Of all men suffer colour blindness. Opera SA does nothing to alleviate their problems.

- Because all languages in the world can be represented by US-ASCII?

- or go visit a different web site

- No javascript, no service, at Twitter.com

- Conversion Failure and Device Bias at Google Plus leads to Profit Loss

- Conversion Failure at Tele2.nl leads to Profit Loss

- Conversion Failure at Bol.com leads to Profit Loss

- Why bother sending an e-mail at all?

- When the digital super highway suddenly comes to a full stop.

- Ever heard of cross-load from a URL?

- Surely the brochure is unimportant on the dedicated brochure page...

- What else are they hiding?

- Education that fails to teach

- This highway only open to Yugos

- We do not work on Sundays, thus you do not get to spend your money

- Javascript Required, But CoderTools won't Tell You

- Limited functionality leads to profit loss

- To download MS Windows 7, MS wants us to register... but their registration center looks empty

- An HTML form that requires javascript without notification

- A sub domain that looks nothing like its primary domain

- When web sites lose profit

- When web sites fail to inform

- When web sites fail to inform

- How you can read the articles in English

- Hoe je de artikelen kunt lezen in het Nederlands

zjrJS - Our Cross-Browser Javascript Library

This documentation about the zjrJS Application Programming Interface instructs on how to use the functions inside this cross-browser javascript library.

- Intro to our Cross-Browser Javascript Library.

- Getting up to speed with zjrJS.

- For when you need to know which method to use for the task at hand.

- Alphabetical method listing plus summaries.

- What zjrJS can do for you.

, zjrJS, and its documentation.

- How zjrJS compares to other Cross-Browser Javascript Libraries, like JQuery and Prototype.

- Minimize library size by omitting what you don't need.

- A Best Practice to figure out whether a visitor is using Microsoft's attempt at a web browser, and if so, which one.

- A Best Practice to load external data without AJAX.

- A Best Practice to register your events... and dispose of them when done.

- Each public zjrJS method has its own explanation, example, and use case. This is the starting point.

- Each public zjrJS method has its own test case. This is the starting point using the latest stable version of zjrJS.

- Each public zjrJS method has its own test case. This is the starting point using the latest beta version of zjrJS.

Publizjr - Creates Webpages

This PPS (Page Publication System) is what we use for most pages in our site. PHP and file-based, it allows for easy access and updating, atomicity, and speed.

- Get up to speed on the workings and expectations of this PHP-based webpage generator. This article is aimed at content authors.

- Instruction for Content Editors.

- Instructions for Webmasters.

- Release Notes and Source Archives.

- How you may use Publizjr.

- What we do and don't promise.

- One proven method to include audio files in your web page.

- For dedicated functionality per web page.

- For language-awareness and global code snippets.

- Because your site has international visitors and you wish to serve them with content in their own language.

- For those webmasters that want other options than the built-in static social sharing buttons.

- In case you like to keep track of your audience.

- Because you do not want to build a commenting functionality yourself.

- How to include webforms in your Publizjr Generator Templates by using the JotForm webforms service.

- Choose how Twitter displays links to your web pages with built-in support for Twitter Cards in Publizjr, the web page publication system version 2.

- Follow our efforts to make Publizjr easier to maintain and implement (for coders).

- See a listing of every single change made to the Publizjr software since release 2.

- Read what functionality Publizjr 2 offers, and how to use it when programming or configuring Publizjr 2 Generator Templates.

Music by A.E.Veltstra: Education, Compositions, and Instrumentalist for Hire

Should you hire teacher, musician, director, and composer A.E.Veltstra? Find out.

Compositions from 2015

- A short children's song thought up by my daughter Imbri when she was 5.

- Original Jazz variation on the song used by millions of children to learn their alphabet.

Compositions from 2014

- Original Jazz Tune deploring the burning of the town of Mokum

- The mesmerising John Denver original, arranged by A.E.Veltstra for brass trio and drums.

- Written to thank the Servatius Woodwind Band for 15 years of music and friendship.

Compositions from 2013

- (Dag der Helden). Original 3-voice theme to remember our heroes and veterans. Free to download, use, and distribute.

- Arr. of the German folk music by VoXXclub

- Arr. of the goth rock song by Within Temptation

Compositions and articles from 2012

- Mother Goose Songs: old rhymes to new music.

- New Melodies for Children's Songs

- Kiss! Lip Placement Instructions for Brass Players

- A Myth Explored

Articles from 2011

Turn it into Music - a How-To

Articles from 2009

- Dutch tranliteration

Compositions from 2008

- Arr. of Mull of Kintyre by McCartney and Laine

- Arr. of Calypso by John Denver.

- Arr. of Maid of Orleans by O.M.D.

- Arr. of Sunday, Bloody Sunday by U2.

- Easy listening by the Plain White T's, arranged for small pop group. (4.9MB, 3:28min)

- Goth rock, for small pop group (3.5MB, 2:25min).

- Mad World, Donnie Darko version, arranged for small student band (4.1MB, 2:58min).

- Classic by Brahms, arranged for small student band (1.9MB, 2:02min).

Compositions from 2007

- Brass Band Setting (4.7MB, 3:26min, original).

- Silent Night, Traditional, 1MB, 1:50min, arr. for 3-voice trio

- Combining Silent Night with Feliz Navidad (2MB, 2:41min), arr. for small student band.

- Christmas, small student brass band with melodic percussion (1.4MB, 1:29min.).

- Christmas, small student brass band with melodic percussion (1MB, 1:52min.).

- Uncategorised (1MB, 1:20min.).

- Swing, arranged for student brass band (3.5MB, 2:20min.).

- Traditional / Classical, arranged for student brass band (1MB, 1:20min.).

Compositions from 2006

- Traditional / Big band style, arranged for woodwind band (1.1MB, 1:10min.).

Compositions from 2004

- Pagan Rock (3.7MB, 3:06min.).

Sheet music available upon request.