The computer-industrial complex has been on a mad race of hardware, software and services to shape us “users” in their own image. With the drop in prices for hardware, it seems that a “network” is in everone’s reach. Microsoft is even shipping a “home server” – instant network in a box. What is missing in this hardware and software gold rush is that few of us, myself included, are capable of properly managing a network and hardening that network against attack. And there are a lot of malevolent forces out there ready to attack. As a result, we find ourselves relying increasingly on the gray wizards of networking, often calling them in when it is too late.
The HotDocs QUIT instruction specifies that any code in a computation after the QUIT instruction is to be ignored as code. There are two major uses for this instruction.
Firstly, because QUIT stops HotDocs processing a computation as code, it means that you can put it at the top of a computation to stop that computation from being processed. Very handy if you are halfway through a computation or cannot otherwise make it work.
Secondly, you can use QUIT as a way to add developer comments – simply finish your computation code, enter the QUIT instruction at the bottom, then enter any comments you want after the QUIT command.
The reality is that the QUIT instruction doesn’t really do anything that comments don’t already do. And thanks to HotDocs’ “Comment/Uncomment” block function, its pretty easy to work with large sections of commenting code.
It has been a few weeks since the return from our trip to Paris. We have mostly readjusted. We will shortly be moving our office from Croton-on-Hudson to the neighboring town of Cortlandt Manor. But there is one area where we feel as great loss; for we miss the perfect breakfast. In Paris, or rather Boulogne-Billancourt, we had 3 boulangeries (bakeries) within walking distance from our apartment. Each morning we would make an expedition (two blocks) to the bakery and pick up a fresh baguette (.95 Euros / USD $1.25). We would also pick up croissant beurre, croissant almonde, pain au chocolat, or brioche. We would top it with fresh butter, nutella or confitures. And for the adults, drink it with freshly brewed French Roast coffee. And so, on our return, we sought to reproduce this simple pedestrian breakfast. The pastries and baguettes were ALWAYS fresh from the oven. The had delicate crips crusts. The insides were light and airy, almost delicate. The bread “snapped” in your fingers and crackled under your teeth. The croissant were light, flaky and exuded butter.
Well, it hasn’t been easy. Our local ShopRite (which has everything), sells loaves that are shaped like French bread, but resemble more in texture partially cooked pizza dough. The bread is soggy to the touch when bought, with a cold clammy texture. When warmed up to get a crispy crust, the bread is hard and tough. Sharp teeth are required to tear the break. Rather then melting in your mouth, repeated chewing is required to aid in digestion.
The croissants are even worse. They “look” like croissant, but the resemblance ends at the external appearance. The French croissants were layer upon layer of delicious flaky crust, such that you could unpeel the croissant, and eat it layer by layer. The ShopRite croissants were a single undifferentiated mass of dough. Yes, there were not too dense, and they were buttery, but they had none of the texture and feel of the French version. Once you went beyond to the Almond croissant and the Pain au Chocolate, it got worse.
I then moved on to the local “Gourmet” establishment. They had a wider selection and variety. The French breads (when they were available) had a gold crust and crackled when you squeezed them. But the weight of the bread was wrong. They were too heavy. The dough was dense and chewy. They were interested breads, but they lacked the Artisanal flavor and texture we could get in any boulangerie in France.
Part of the reason, I am told, has to do with CULTURE. In France, the local bakery has two production runs: early morning and mid-day. The breads are made without any preservatives. The means that the lucious baguette of the morning is the stale loaf of the evening, fit only for bread crumbs and croutons. And bakeries are located on every other block. Each morning and each evening the “chefs”, including little chefs, cue up to get the fresh breads out of the oven. In the U.S. we have “factory-sized” bakeries that ship breads through distribution centers to large markets. Breads may take 24-48 hours from when they are made to when they show up on your shelve for you to buy on your weekly (not daily) shopping expedition. In such a food cycle, French bread, with its 12 hour life cycle, would be long dead and stale before it got to your table.
For us, “lost in suburbia”, our option is to take the train to Zaros at Grand Central Station or learn how to make our own bread. At present, we are decided on the later. We will begin to yeast our our starter loaf, and put it in the convection oven while the rest of the family does their morning showers.
Sometimes, there are things you want done to your assembled document that HotDocs simply cannot do. Perhaps you want to check margins for a specific section, re-style an inserted template on the fly or automatically run a custom in-house print macro upon completion. For these sorts of tasks, the PLAY instruction is what you wish to use. PLAY will tell your word processor to run a specified macro after your document has been created (ie: after the interview, but before it displays as a document). If there is more than one PLAY instruction in a template, HotDocs will process them in the order encountered.
The syntax for a PLAY instruction is pretty simple:
To insert the PLAY instruction, go to the HotDocs button on your HotDocs toolbar, click “Other Field”, then specify PLAY from the drop down box. You will be asked for the macro name you wish to run. Click OK.
Notes About PLAY
If you use WordPerfect, your macro can be stored anywhere. If it is outside the default macro location, then your play instruction must have the full file path.
If you use Word, the macro must be stored in the template itself, normal.dot or some other template that is loaded and available at the time you assemble your document. If you are using Word RTF templates, you may optionally associate a specific template via the Component Manager.
When it comes to REPEATS in HotDocs, LIMIT is one very handy instruction to know how to use. As its name suggests, it will LIMIT the number of iterations a repeat can hold, by placing the instruction in the dialog script of the dialog you wish to limit. Please note that this is entirely different to the number of rows shown on a repeating spreadsheet dialog. LIMIT will restrict a dialog to have only (for example) 3 iterations, where as the rows shown command will allow a repeat to hold countless iterations, but only show a specified number.
The most basic use of LIMIT is to provide a fixed number, such as:
This doesn’t really help you much, unless you are certain your dialog is only ever going to repeat 3 times only. Here, we can introduce the concept of a user-specified LIMIT. Lets say we have a dialog named Child DLG that collects some general information about all the kids, as well as a variable named CHLD CNT – asking the user how many children there are. On Child DLG is a repeating sub-dialog Children RPT – it will repeat once for each child. In the dialog script of Children RPT, we could have
LIMIT CHLD CNT
This is better – we ask them how many kids, then LIMIT the repeating dialog to that number. This will stop “empty” repeats in our templates where users have clicked forward and answered a field accidentally. Great. Lets make it a bit easier to use. Instead of CHLD CNT as a number variable, lets use CHLD Num MC as a multiple choice variable, with options from 1 to 20.
LIMIT INTEGER ( CHLD Num MC )
Now, our user can click the number of kids from a list and our LIMIT instruction converts the multiple choice value to a number value. Simple, straight forward and user friendly.
The above technique can also be used to dynamically show more rows on repeating spreadsheet dialog dynamically