Monday, November 4, 2013

A Short History of Free-Form RPG

Free-form RPG is back in the news with the announcement of free-form D, F, P, and H-specs. In this short essay, I look back at the history of free-form syntax in RPG.

It all started more than twenty years ago, back when RPG IV was being designed. At the time, there were two distinct schools of thought. On one side, there were people who insisted RPG should have a fully free-form syntax. On the other, were those who strongly believed that RPG should remain in its traditional fixed-form layout. The result was a compromise that leaned heavily towards a traditional fixed-form syntax, but with some free-form elements, such as keywords on the new definition specification and expressions in an extended factor two entry.

My first task in the implementation of the RPG IV compiler was coding the new D-spec, along with its keywords. Later, we were able to convince our planner that keywords should also be allowed on the F-spec. Later still, keywords on the H-spec became an obvious design change.

The extended factor two opcodes, such as EVAL, IF, DOW, etc., were a riskier proposition. At first one developer was assigned the task, and later another to help out the first. But as time went on, it was clear that they weren't making any progress. Late in the development cycle, I was assigned that piece of the language. Scrapping the work already done and starting from scratch, I finished the feature well in time for the initial release of RPG IV.

With the release of RPG IV, the development team was scaled back, leaving two developers working on new features. Because the extended factor two calcs were such a hit, one proposed enhancement was a fully free-form syntax for C-specs. However, we believed that it would require 100% of all development and testing resources for one release. When considering potential enhancements, this item would always get pushed well down the priority list.

This changed during the planning cycle for V5R1. I realized that common coding standards had changed somewhat during the past few years. I realized that a new free-form C-spec did not need to include all traditional C-spec features. Conditioning indicators weren't needed now that we had the IF opcode. Resulting indicators were largely deprecated in favor of built-in functions. And some opcodes were no longer needed, such as IFxx and the MOVE opcodes. We just needed a few additional built-in functions to fill in some gaps. With this strategy, free-form calcs could be implemented relatively easily, along with other useful functional enhancements.

But of course, this proposal was not without controversy. In order to get the proper design, we had approval from management to discuss the proposal publicly, on a popular RPG related mailing list. Many people loved the idea, but some were vehemently against the proposal. Personally, although I knew we had something good, I was so disheartened with the criticism that I gave the feature a 50/50 chance of making it to release. However, in 2001 it was released, and over time, most critics came around to accept the syntax.

With V5R1 and /FREE released, we started thinking about moving towards a free-form syntax for other spec types. However, while free-form syntax made a lot of sense for calc specs, we could see little benefit for the rest of the language. Other enhancements of a more functional nature were always considered more important.

In the summer of 2003, the iSeries group in the Toronto Lab could not escape the "staffing actions" rampant throughout the Software Group, and the RPG compiler development team was reduced to one person. I was moved to a new team responsible for PL/X, a compiler used internally within IBM for the development of mainframe software.

So now we come to the Fall of 2013, 12 years after the release of  free-form calcs, 18 years after the release of RPG IV. A few weeks ago came the announcement of free-form D, F, P, and H-specs in RPG. Although I'm happy to see this come about, I'm also puzzled. It seems all too anti-climactic, too little too late to save an anachronism of a programming language. In a previous missive entitled Is RPG Dead? The Autopsy, I list half a dozen features common to modern programming languages but missing from RPG. Note that free-form syntax is not included in that list. At the time I wrote that, significant parts of the language were still fixed-form, but I didn't consider the lack of a fully free syntax significant.

So what's the big deal about the additional free-form syntax? More than ten years ago when I was part of the RPG development team, we always looked for useful functional features to add to the language. That is, features that would help improve programmer productivity, or allow programmers to do things they couldn't do easily before. But that seemed to change about ten years ago. In the last release that I had any involvement with, one feature added was XML operations within the language. It wasn't as if programmers couldn't handle XML before since there were already XML API's in use. But as far as I could tell, the only reason the XML opcodes were added was because COBOL was getting XML operations, and someone within the management team decided that RPG needed them too. I considered it a goofy feature, but I was too tired and jaded to argue. (Now that JSON is commonly used in places where XML was previously used, should RPG now include JSON opcodes?)

Lately, the major enhancements to RPG seem to be accompanied by major coverage in the iSeries press. Consider that silly Open Access feature, which seems primarily designed for ISV's helping to modernize old monolithic applications, which in most cases probably should be rewritten from scratch instead. And now with the new free-form specs, a lot of pundits are writing about how the feature will make the language more acceptable to other programmers, while ignoring the functional deficits previously mentioned. That is, these days, it seems like planning RPG content is more of a public relations exercise geared towards managers of client RPG shops rather than providing real improvements making the job of RPG programmers easier. As RPG falls further and further behind the modern programming languages, I suspect the PR show will become more and more prominent.

In my opinion, although I think the new free-form specs are a nice improvement to RPG, they will not make RPG more palatable to the programmers of Java, Python, PHP, etc. A dozen years ago, we saw little justification for the feature, and I don't see what has changed in the meantime. If anything, RPG has become less and less relevant as applications programmers continue to discover the productivity gains to be had by using modern interpreted languages like Python and PHP.

Friday, October 18, 2013

Facebook WILL Put Porn In Your Newsfeed

Facebook offers several options to customize what you see in your newsfeed. However, sometimes Facebook ignores those settings. Facebook decides that, in spite of your settings, you really need to see something. And sometimes, that something is pornographic.

First, let's review what you can configure: There are several ways to view your newsfeed. The default is "News Feed", in which Facebook decides what content is likely to be most important to you among everything your friends post. In my opinion, no algorithm can ever properly understand what I think is important, and so I use the "Most Recent" option.

This still isn't acceptable for me, which leads us to the next way to configure the newsfeed. Move your mouse cursor over a friend's name. You should see a popup giving some information about that person. Next, click on "Friends", then on "Settings". This should give you a menu showing what postings you see from that friend. That should look something like:


For me, I don't want to miss anything from my friends, and so I choose "All Updates". However, to keep some semblance of  order to my feed, I've deselected certain options. For almost all of my Facebook friends, I've deselected "Life Events", "Games", "Comments and Likes", and "Other Activity". It took me a couple of hours to do this for all of my friends, but I consider it well worthwhile. It makes Facebook a useful tool, whereas before, my newsfeed was a cacophony of useless drivel. With these options deselected, my feed shows me just what I want to see.

However, there's a defect in Facebook's software. Or perhaps it's a conscious design feature. On a regular basis, two or three times a day, I see a comment or like in my newsfeed, contrary to my explicit choice in settings. I've even reported this defect a number of times to Facebook, to no avail. And I know others have too.

Now to the title of this rant. Here's something that appeared in my newsfeed a couple of days ago. One of my friends commented on some page, and that fact appeared in my newsfeed contrary to my settings. Here's what showed up:


Now then, I'm not criticizing the fact that my friend commented on this particular posting. He certainly has that right. And I'm not objecting to the page he posted too either. However, Facebook's algorithm's somehow decided that I should be interested in his comment regardless of my explicit settings. This is extremely annoying, and unacceptable. I went through a lot of trouble configuring Facebook so I won't have to be subjected to this kind of content in my newsfeed.

To summarize, Facebook will, due either to some software defect or explicit design, put content in your newsfeed contrary to your explicit settings. As a consequence, if one of your Facebook friends posts on a page that's offensive to you, you will occasionally be subjected to that posting regardless of your settings. That offensive content may well be pornographic, or of a violent nature, or espousing some contrary political or religious viewpoint. Whatever the reason, you will see content you don't want to see in your newsfeed.

And worse, this may well apply to what your children see too. I know some parents who let their children under 13 sign up to Facebook, contrary to Facebook's rules.

If you're concerned, let others know. And let Facebook know that you're concerned too.

Cheers! Hans 

Tuesday, October 1, 2013

Ukulele Chord Diagrams

After I started playing ukulele, I realized that I needed a way to create my own song arrangements. There are numerous web sites that offer chord arrangements for songs, many specifically geared to ukulele. We all know that Dr Uke 's Songs and Richard G's Songbook are great sources of ukulele arrangements. And of course, Chordie.com has everything.

But I'm not always satisfied, especially with Chordie. Chordie often provides a good starting point, but I always want to do things differently. There are always multiple ways to finger every chord, and often, there's a better sounding alternative to the standard open fingering used in most song arrangements. Here's an example of the three main chords in the key of D, using my favorite alternative form of A7:

To prepare your own chord arrangements for your favorite songs, you need a couple of things. First, a good word processor. LibreOffice Writer is my choice since it has full-fledged desktop publishing features. It also runs on a variety of different operating systems.

Second, you need a source of graphics for the chord diagrams. One way to do that is to download the chord graphics from a site like Chordie.com. But finding all the diagrams you need can be tedious. If you're technically oriented, you can figure out a way to download them all, but then you'd have a torrent of files to sort through. And you still won't get diagrams for alternatives, such as the 0454 A7 (pictured above).

And so, I created my own chord diagrams, which you can download from my Ukulele Chord Box Collection. There are six collections to choose from, with chords geared to standard GCEA tuning, ADF#B tuning, and standard baritone tuning. In addition, there are left-handed variations for them all. The diagrams come in two sizes: 48x64 pixels and 36x54 pixels.

I've made these available under a Creative Commons License, so you can do what you want with them. If you find these chord diagrams useful and want to show your appreciation, there's a Paypal link on the download page where you can donate $10. I certainly won't get rich from these donations, but $10 will pay for a couple of beers at the Royal Tavern, where we hold our monthly ukulele jam in Kingston.

Using LibreOffice Writer, I usually include the chord names within parentheses within the song lyrics, and highlight the chord names in red. I then put the chord diagrams at the bottom of the page. If there's no room at the bottom, I add a frame to the side, and put the chord diagrams there. With a folder view of the chord diagrams open, I drag and drop the image into the document. With a right mouse click on the image, I choose "Anchor", and then select "As character". I then cut and paste to position the diagram where I want.

Cheers! Hans

Wednesday, July 31, 2013

Dr. Anthonij Moll (1786-1843)

As I mentioned earlier, there were some rather important people among my roster of distant relatives. In this posting. I'll say a few words about my 2nd cousin, 4 times removed, Anthonij Moll.

Anthonij Moll was born in Maassluis March 8, 1786, the eldest of the Reverend Evert Moll (1755-1805) and his first wife Catherine Knipschaer (1766-1790). He attended the University of Leiden from 1801 to 1806, and graduated as Doctor of Medicine after defending his thesis entitled "Specimen med inaug, exhibens generalia quaedam circa theoriam, sic dictam, Incitationis", which he dedicated to "the friends of truth". He then moved to Nijmegen, holding the position of assistant extraordinaire in the military hospital, which at the time was treating numerous Prussian prisoners of war.

He also served as city physician, and later in 1814 became surgeon-major extraordinaire in the militia. He showed dedication and courage during the 1813 typhus epidemic. He himself was affected by the disease, which nearly killed him, and never fully recovered afterwards. In 1927, Moll succeeded Dr. F.W. Everts as town doctor of Arnhem. He also became president of the provincial committee of medical research in Gelderland.

Moll was a skilled speaker and writer, giving numerous speeches. In addition to original publications, he also translated a number of works on natural philosophy from German. He was one of the first doctors in the Netherlands advocating for the importance of hygiene, and defended the therapeutic benefits of a seaside climate. He was a member of numerous societies, and was bestowed several honors, including Knight of the Order of the Netherlands Lion (1841).

Moll married Albertina Mos (1791-1866) in Nijmegen, May 26, 1813, with his brother Jacob performing the ceremony. From this marriage came four children: Evert (1814-1896), Johannes Gijsbertus (1816-1817), Anna Sophia Catharina (1819-1898), and Johannes Gijsbertus Jacob (1822-1903). Anthonie Moll died in Arnhem, March 16, 1843.

Wednesday, July 24, 2013

My Boldt and Moll Families - a Short Overview

As I mentioned earlier, about half a year ago I returned to my hobby of genealogy after a 15 year break. Since my return, I've added significantly to my database. It's now time to start blogging about some of what I've learned.

My Boldt ancestors lived in Mecklenburg-Schwerin, a small Grand Duchy at the western end of Germany's Baltic Sea coast. This was always one of the more rural of the German states, with a predominately feudal society up until the end of the 19th Century. Most people worked as peasant farmers or day laborers. For most, their only hope of bettering their lives was to move away. My 4th great uncle Jochen Boldt (1824-1910) moved his family to south-central Ontario in the 1870's. where many of his descendants still live.

My earliest known Boldt ancestor was Aßmus Bolt, who lived in the village of Dümmerstück in the early 1700's. His son Christoph Boldt (1735-1821) moved to Vietlübbe. His great grandson, born in Hindenberg, was my great grandfather Heinrich Boldt (1873-1957). Like many others, Heinrich worked as a day laborer. That is, he did, until he discovered that the land owners were cheating the workers out of their fair wages. When he could no longer find work in Hindenberg, he moved with his family to Hamburg, joining other relatives who moved there earlier. The surviving descendants of Heinrich Boldt, all four of us, now live in Kingston, Ontario.

There is a lot more information available on my Moll family. One of the single most important documents is a list of the descendants of Evert Moll, born about 1628 in Velp. (The document incorrectly lists the progenitor of the Velp Moll's as Claas Moll.) This was published by the Vereeniging "Families Mol(l)", an organization active during the 1930's and 40's. You can find scanned copies of their publications at Jan Wies' website. This document includes more than 450 descendants in the Velp Moll clan, including three of my aunts (#384 Geertje Johanna, #385 Marritje, and #386 Gerrie).

In general, the Moll's were fairly well off. There was even a coat of arms described: three black moles, one above the other, on a field of silver. My direct Moll ancestors were generally bakers, merchants, or farmers. My great great grandfather Herman Moll (1822-1902) moved to Nijkerk shortly after getting married in 1847, and worked there as a baker.

Looking further afield at some distant Moll cousins, you can find some relatively famous individuals. For example, my 2nd cousin, 4 times removed, Antonie Moll (1786-1843) was a distinguished medical doctor and surgeon in Arnhem. His first-born son Evert Moll (1812-1896) was a learned liberal theologian and minister who served the congregations of Hengelo, Vollenhove, and Goes. My 4th cousin, twice removed Evert Moll (1878-1955) was a well-known painter, known for his impressionist paintings of the Rotterdam harbor.

But my most famous distant cousins weren't Moll's, although one was the grand-son of my 3rd great aunt Teunisken Moll (1803-1839). My 2nd cousin, twice removed, was the Nobel-Prize winning physicist Hendrik Antoon Lorentz (1853-1928). But he's not the only Nobel Prize recipient in my list of relatives. I'm also related to Nobel Prize recipient Heike Kamerlingh-Onnes (1853-1926) in two ways: As 4th cousin twice removed, and also as 5th cousin twice removed. The two of them were 5th cousins, and although they both worked as physicists at the University of Leiden, they probably didn't know they were related.

There were also a few "black sheep" amongst my distant relatives. For example, Elisabeth Keers-Laseur (1890-1997) was an unrepentant Nazi supporter both during and after the war.

For some of these people, I'll write more in the months ahead. 

Cheers! Hans

Monday, July 15, 2013

Dealing With Death

Last year, I worked for a couple of months for a company located in a renovated factory on the Cataraqui River. The clients for this company were funeral homes. What was it like working in that line of business? It's hard to find the right adjective to describe that business domain. Weird, perhaps. No other type of business deals with such an emotionally charged issue as death.

One of my tasks was scraping the existing client web sites to extract obituary data. Technically, the PHP programming was fairly straight-forward. However, the task also required reading through the extracted data to make sure it was read correctly. While I had no problem with most of the obits, which described rich, full lives of people who died of old age, other obits were more difficult to read. Such as obits for young children, including a brave 12 year old girl who lost her battle with cancer. One time, I read a death record that listed the place of death as "airplane" and the address of death as the World Trade Center. There's a certain quality needed for people working in the funeral industry, a quality I lack. Even now, 14 months after I quit that job, I still have little desire to read obituaries.

Then again, I must still read death records, since one of my interests is genealogy. Finding the death or burial records for someone is just as important as finding their birth, baptism, or marriage records. But looking at the death records overall, the life expectancy statistics in past centuries can be quite shocking. Consider the following graph:


There are about 4500 individuals in my Gramps database. Of these, I know the age of death for 1149 of them. Most of these people lived in the 18th and 19th Centuries. The largest single lifespan age group is children younger than 5 years old. Prior to the 20th Century, high infant mortality substantially brought down the overall average life expectancy. That is, if you survived childhood, you stood a good chance of  living into your 70's or 80's.

Take one family of distant cousins I researched yesterday using WieWasWie: Jacob van de Klomp and Hendrica van der Wepel (my 1st cousin, 3 times removed) were married in 1882 in Zeist, and had a total of 12 children, born between 1882 and 1898. Of the 12, four made it past their first year of life: Reijer born in 1882, Gosina born in 1889, Hendrica born in 1896, and Willem born in 1898. If they had lived just 50 years later, the vast majority of them would have survived infancy.

Prior to the 20th Century, certain things we take for granted today just didn't exist. Things like sanitation, immunization, and proper health care. Epidemics, such as cholera, spread rapidly throughout Europe. I saw this clearly in the church records of Gielow, a small town in the south-east corner of Mecklenburg-Schwerin. While reading the microfilmed church records, I came across the burial record of  Wilhelm Ludwigs in October 1850, who died at age 6 of cholera. Several pages later in the church book, I found the burial record of Magdalene Millhahn who also died in October 1850, three days old. Scanning through the pages, I found a total of 50 people who died in October and November of 1850 in that one small town, almost all of cholera.

I find genealogy fascinating since it brings history to a personal level. Looking at the death and burial records can be difficult emotionally, but really shows how difficult life was in past centuries, and how lucky we are today.

Hans 


Wednesday, July 10, 2013

Working in a Sick Building?

Last year, I worked for a few months in an office in an old renovated woolen mill on the Cataraqui River in Kingston. There were a couple of factors that lead to my resignation, and perhaps I'll discuss other reasons later. But for now, I'd like to focus on one.



Old buildings like this have a certain character lacking in more modern structures. In Toronto, I worked for a couple of years in a century old office building just off the Garment District. I liked the exposed brickwork and wooden beams inside the building, as well as the bare wooden floors. This old restored mill in Kingston had all that, plus a nice scenic location on the river.

However, this building is an area where much of the land and sediment in the river is still contaminated with significant amounts of toxic chemicals, such as lead, chromium, and mercury. I have no doubt that the building I worked in met current rules for workplace safety, but I still have to wonder if there's something in the environment within that building.

For a long time, I've had to deal with anxiety symptoms. I've identified a couple of causes. First, I seem to have a sensitivity to MSG. Second, my symptoms seem related to seasonal allergies. The latter can be dealt with using one particular OTC allergy medication. The former can be addressed by careful reading of food labels and avoiding any foods containing MSG.

However, during my time on that particular job, I found my anxiety steadily increasing. And it seemed to do so in a way totally unrelated to the stresses of the job. Even after quitting that job, the symptoms stayed on for several months before fading away. I suspected something about the environment within the building. Sure, there were other aspects of the working conditions in that office that were less than ideal. For instance, the level of lighting was unacceptably low. There were spotlights aimed at the small desks, but the overall ambiance made me feel like sleeping instead of working. Also, the development staff was crowded into a small space, which made working uncomfortable. But what I found really suspicious was a greasy residue on the floor. Was that oily substance out-gassing some chemical into the air?

Sure, this may not be the worst of Kingston's brown-fields. And I'm sure most people who work in this particular building do so without feeling any ill effects. But for me, I think I'll stay away from that area.




Thursday, February 28, 2013

Genealogy - Fifteen Years Later

Readers of this blog know that I have a variety of interests. One interest that hasn't come up yet in this blog is genealogy, the systematic study of our ancestors. I started tracing my lineage back in 1992. I pored over microfilms at the local LDS Family History Center. After a few years, amassed four binders full of data. But my paced slowed down, and other interests started to demand my attention. In 1997, a trip to Germany resulted in some good information about my Boldt line. But after that, I did little more, leaving lots of unfollowed leads and unanswered questions.

A few months ago, Sylvana by chance met someone who claimed to be a direct descendant of millionaire George Boldt, the guy who built Boldt Castle in the Thousand Islands. I contacted him and asked him for details. (Later, I realized his claim was dubious since George's only son had only daughters.) This prompted me to return to my research and continue where I left off. I haven't gotten back to the LDS yet, though. I'm still going through my old data, looking up new data on the internet, and updating my files. This process has given me a new appreciation for the importance of documenting sources. Going through the data on my computer, I often question where a piece of information came from. So that's one of my first prirotities, one that will take some time to complete.

For the most part, source information is recorded in my written notes. But in one case, I have a document full of good information about my Laseur ancesters, but unfortunately, I have no idea where it came from. I sent an e-mail to one possible person. However, his e-mail address is 13 years old, and predictably, the e-mail bounced. So if anyone knows any information about the descendants of Jan Laseur, born about 1610 in the Amersfoort area, please let me know so I can properly attribute the source of that data.

So what has changed in the past 15 years? First, the technology has progressed. Back then, I was using a DOS-based shareware program called GIM. Today, I use an open-source program, Gramps. This program strongly reflects the design of GEDCOM version 5.5, the most current GEDCOM standard. Compared to the older versions, 5.5 has much better support for sources, and a wider choice of events. It is now much easier to paint a more comprehensive picture of a person's life. However, the GEDCOM 5.5 standard was released in 1995-1996. While there have been some proposals to move beyond 5.5, it still remains the current standard.

Second, use of the internet has, of course, increased. There are a number of commercial web sites that offer information for a price. For me, though, I can't quite justify the cost. Fortunately, there are still a lot of free sites where you can find information. This is especially true for Netherlands research. By searching the web, I was able to add significantly to the Dutch side of my pedigree. One good example of this is the site Jan Wies over de familie Mol(l). This contains everything published in the 1930's and 40's by the Genealogische Vereeniging "Mol(l)". If you have Moll's in your ancestry, this is the first place you should look. You can download complete lists of descendants of three different lines of Moll's. (I'm a descendant of the Moll's from Velp.)

But while Dutch genealogists have made good use of the internet, the same can't be said for the other half of my pedigree, from Mecklenburg-Schwerin. On that side, there's not much more information than there was 15 years ago.

So what are my next steps? First, there's the old question: Is my Boldt family related to the millionaire George Boldt? This is a question I wouldn't bother with if it weren't for an old family story about a weatlhy American relative visiting the Boldt home in Hindenberg. Second, I have significant unexplored areas in my Mecklenburg pedigree, specifically the ancestors of Carl Ludwigs (died 1909 in Rostock) and Emma Elise Katharine Wulff (died 1916 in Hamburg). Finally, a lot of additional little details need to be filled in, as well as expanding the list of relations.

Cheers! Hans

Monday, February 11, 2013

Operation Red-Nose Project

About 13 months ago, I started working on a project to replace the software used by the local Operation Red-Nose (ORN) organization. Up until then, they had been using an old DOS-based system that was long past its best-before date. In fact, they were only using part of the system, and even that had major usability issues. The project was suggested by my supervisor at the MCF Practice Firm, a volunteer at ORN. The purpose of the project was for me to pick up some specific programming skills. At the time, I couldn't complete the project since I got a job offer five weeks into the program. But that job didn't last, and I was able to return to the ORN project. (During the summer, federal funding for the practice firms was withdrawn, and so MCF was forced to close.)

For the ORN project, I decided on CakePHP and MySQL. I chose PHP and MySQL since they are pretty much ubiquitous in the I.T. realm. For the framework, I quickly narrowed down the choices to CodeIgniter and CakePHP. I chose the latter since it strongly encouraged the use of an MVC design. The ORM also impressed me, with its ability to get all the data associated with a transaction in one operation (typically). That is, all the SQL joins were taken care of automatically.

In a nutshell, the ORN application manages many aspects of the operation, in particular, the event nights during the annual campaign. The system keeps track of volunteers. During an event night, volunteers are checked in to the system and assigned to teams. Operators take calls from clients and enter their ride requests into the system. The dispatcher assigns the requests to the available teams, and tracks the progress of the requests. And at the end of the evening, the treasurer tracks the donations.

An essential part of the development process was demonstrating the system to the ORN volunteers and getting feedback. After each weekly meeting, I'd normally have several pages of suggested improvements. The main issue was understanding how he volunteers would learn the capabilities of the system, which wasn't always easy for a programmer geek like me. As the programmer, I knew how to get things done. But for others, especially those with little computer experience, it wasn't always clear.

Add to that some language issues. ORN Kingston is managed through La Route du Savoir, an organization that provides training and services to French speaking people in the Kingston area. Although everyone at ORN speaks English, one person had a bit of trouble with some of the more technical language I used. Often, someone had to translate my technical language into a form that that person could understand, and her requirements into language I could understand. But we managed, and the result was a system that everyone was happy with, even if it took a few weeks after the start of the 2012 campaign to get all the required features in place and the defects fixed.

Is there more work to do on the new Kingston ORN system? Sure. The data entry form for the telephone operators can be improved. I took a few phone calls myself, and readily saw one problem with the layout of the entry fields. For the 2013 campaign, I'll rearrange the entry fields to reflect the order that questions are asked of the callers. That is, if the first question is "Where are you?", the pickup location should be the first item on the form. In general, that form should have a list of questions for the operators to ask to ensure that nothing is missed.

How did CakePHP work out? In retrospect, I think it was a perfectly reasonable choice. At no time was there anything that CakePHP couldn't handle. There was one annoying issue with session timeout. However, upgrading to version 2.2 addressed that problem. The upgrade didn't go without some effort, though. When I started the project, I didn't always follow the preferred naming convention. For version 2.2, I had to rename my controller classes.

What about MySQL? The application currently uses 16 tables, which is puny compared to other production systems. Although I prefer more robust DBMS's, I could clearly see how MySQL has matured over the past few decades. The InnoDB engine (now the default) is sufficiently robust for this type of application, supporting foreign keys and transactions, vital features in even the smallest of databases. In contrast, today in the year 2013, there are still production MySQL databases that use the old MyISAM engine. In my opinion, any database administrator who entrusts vital company data to a MyISAM database should be fired immediately.

If I were to start the project today from scratch, would I do things differently? Styles of programming for web applications are always changing. For the ORN project, I designed it as a fairly traditional server-based web application, with just a bit of client-side programming. But the trend is to move more processing to the client, with the view and controller components on the client and the model on the server. But for this type of application, I don't think I'd do things any differently.