A DIY Legal Keyboard

Inspiration: The LegalBoard Keyboard

The LegalBoard is a dedicated keyboard designed to make a lawyer's day-to-day writing more accurate and efficient. It does this by providing dedicated keys to insert commonly used symbols like the section symbol (§) or paragraph symbol (¶), instantly toggle underlining or italics, start a bullet list, insert common citations like "plaintiff" and "id." and much more. I encourage you to check out the LegalBoard and all it can do in the link above.

When I first saw the LegalBoard, I immediately realized how I could use it in my practice. For example, as a transactional attorney, I find myself using the section symbol frequently and it's always difficult to insert it into text. I would usually end up simply searching quickly for it on Google, then cutting and pasting it as unformatted text into my document. I would also like a way to quickly toggle Microsoft Word's track changes function on and off with the press of a single key.

The LegalBoard seems like a great solution for a lot of lawyers. But I realized I only needed a small subset of the functions the LegalBoard provides, like inserting common citations or toggling small caps. Since I don't do court briefs, citations and specific formatting doesn't come up very often. Also, I can't say goodbye my beloved WASD Cherry MX keyboard. So I, instead, set about trying to find a way to recreate the features of the LegalBoard in my own way.

My Solution Using AutoHotKey

First, I put together a list of the functions I wanted to implement, based on my day-to-day needs:

  1. Insert the section symbol (§)
  2. Insert the paragraph symbol (¶)
  3. Insert the copyright symbol (©)
  4. Toggle on/off Microsoft Word's track changes
  5. Shortcut to do an "insert unformatted text" in Microsoft Word (which I use frequently when copying model language from one document to another)

That was it. It would be easy to add other shortcuts and functions later, but that was my starting point. And, since I have a keyboard with a dedicated number pad, I decided to take the same approach as the LegalBoard and use the number pad for my hotkeys.

AutoHotKey

As I searched the Internet for something I could use to provide an answer, I came across several references to a program that had what I needed. AutoHotKey is a powerful, free, open source scripting language for Microsoft Windows (I am running Windows 10 and I use Microsoft Office 365). AutoHotKey does far more than I would use it for, but it's been around a long time and has a loyal following, so I decided to see if I could use this bit of software to address my needs.

Step-by-Step Instructions

Step 1: Download and install AutoHotKey. You can download AutoHotKey here.

Step 2: Install AutoHotKey. It's very straightforward, but if you wish you may find this video walk-through helpful.

Step 3: Write your custom scripts. When AutoHotKey is installed, you will be prompted to create a script file for the program and AutoHotKey will create one for you with the ".AHK" extension. Open that file in your text editor of choice (Right-click -> Open with -> Notepad, for example). AutoHotKey will begin with a sample script in the file, which you can use or delete as you wish.

Here is the full text of my .AHK file you can copy and use if you'd like.

NumpadHome::
  send, §
Return

NumpadUp::
  send, ¶
Return

NumpadPgUp::
  send, ©
Return

NumpadLeft::
  send, ^+e
Return

NumpadClear::
  send, ^+o
Return

This script is very simple, it maps the numeric keypad as follows:

  • 7: §
  • 8: ¶
  • 9: ©
  • 4: toggle track changes
  • 5: Insert unformatted text

Obviously, the last two items are specific to Microsoft Word. However, the other hotkeys work across Windows, meaning it's easy to insert the special symbols while I'm using Notepad, Gmail in Google Chrome, or even my Twitter client.

I created a quick reference that I taped above my numeric keypad so I can quickly see all the functions. You might find it useful to print and use yourself.

Set AutoHotKey to run when Windows is started

You can always start AutoHotKey by double-clicking the .AHK file and it will continue to run in the background until you shut down your computer. If you'd like, you can make it start automatically when you reboot Windows by following the instructions here.

Do Even More with AutoHotKey

My use of AutoHotKey to date has been limited to the functions above. However, it's a very powerful program and you can do much more with it. For example, you can map keys to launch programs like Microsoft Outlook or Adobe Acrobat at the touch of a button or highlight text and launch Google Chrome to execute a Google search using the highlighted text with a single key press. Those scripts and many more are available here. Use AutoHotKey to insert large blocks of text that you use frequently or insert today's date (even within a file name) by following the scripts here.

This LegalBoard-like solution has worked great for me for the past few weeks. I am planning to continue to add more functions to my system as I find a need in the future. In fact, I just added the "insert date" function from the latter link above as I use that format in my file naming convention.

Winding Down a Cloud Computing Engagement

Like any other professional business engagement, a cloud computing relationship will come to an end at some point and it's important that both parties give consideration to what happens at that point. The contract end may be triggered by the expiration of the governing agreement term or it could be a result of a dispute between the parties leading to an early termination. As with many of these sorts of issues, the best time to consider and negotiate the end-game terms between the parties is before formation of the formal relationship. It's not to either party's advantage to wait until the expiration of the agreement is pending or the working relationship is badly frayed before discussing how to separate their interests.

On the other hand, there are several provisions related to the termination of a cloud computing engagement that may not necessarily apply in other transactions or that are of particular importance given the nature of the cloud computing transaction.

Ownership of Data

The governing agreement should contain clear language regarding ownership of the data contained within the cloud. In most cases, between the cloud services provider and the customer, the customer will have clear ownership of all data they move or otherwise input into the service provider's systems. In some cases there may also be proprietary data that is generated within the servece provider's software that the service provider does not intend to allow the customer to retain following termination or expiration of the agreement. In that event, that specific data and the expectations of whether that data can be downloaded and retained in any form must be discussed prior to signing the agreement.

Finally, the service provider may also wish to retain some form of the customer's data going forward as part of their core service offering or as part of an ancillary service. For example, an online payment processor may wish to retain information related to buying trends over the life of the engagement and use that information to address other markets or even sell that data to third parties. In any case, the customer must consider any such retention rights carefully and even where the service provider agrees to retain only "de-identified" information, the customer will want to consider any potential issues.

Data Extracts

When a cloud computing relationship is winding down, the customer must be fully aware that it most likely has valuable data -- and data that cannot otherwise be recreated -- present entirely in the service provider's cloud. Generally, the customer should have clear rights to extract all of their data (but see the possible exceptions above) from the service provider system upon termination of the agreement. The customer may also consider extending those rights beyond the termination of the agreement to allow a period of time for their team to confirm what information is needed and to ensure all data is obtained. It may also be desirable but perhaps not necessary to allow for a data extract at any time during the normal life of the agreement.

One important consideration regarding any data extract is that the customer must specify that the data will be provided in a format that will be useful to the customer in the future. Either a platform-agnostic format such as XML or an industry-standard format may be appropriate. Allowing the data to be provided in the service provider's preferred format may otherwise result in data that is of no value following ending of the relationship.

Transition Services

In addition to the rights to customer data, there may be a need for the assistance of the service provider in transitioning to substitute services. The customer may otherwise find it very difficult to map the service provider's data into the a new system. Discussions between the parties will be necessary to consider whether such services are to be provided at no cost to the customer (perhaps in the event the agreement is terminated due to the service provider's breach) or whether the service provider is to be compensated for their services, in which case the rates and reimbursable expenses should also be considered. Of course, the best time to negotiate the appropriate structure and rates is before the relationship turns sour.

Destruction of Data

Directly related to the provisions regarding ownership of the data and the service provider's possible right to retain some portion of the data, the agreement should also address requirements for destruction of any non-retained data following termination or expiration of the relationship. The service provider should be obligated to destroy any such data in its possession (except that it may rightfully retain) within a specified time period. The destruction should include any such data that may be contained on archival or backup storage. In addition, depending on the nature of the data in question, the service provider may also be required to follow specific destruction protocols to minimize the chances of future recovery. The customer will likely wish to have any such data destruction activities documented and verified in writing by the service provider.

Audits and Records Retention

Finally, although it usually not necessary to provide the cloud service provider with audit rights, in some cases the agreement may contain those sorts of provisions anyway. If so, the customer should confirm they have the proper internal procedures to retain the data and usage statistics that may be subject to an audit for whatever period of time the audit rights are available.

10 Common Pitfalls in Software License Agreements

Nearly every business will enter into software license agreements on occasion. A sophisticated, growing business may execute many such license agreements each month but a small manufacturer may do so only a handful of times each year. Many agreements for commercial, off-the-shelf software such as the Microsoft Office suite or company-wide antivirus software are often only reviewed briefly by the legal department, with the focus instead on commercial terms, pricing, and license rights.

But there are many software license agreements that deserve a careful legal review before execution. For example, those systems that are critical to the the day-to-day operations of business, where the cost for implementation and ongoing use is significant, software that will have a large impact on other business systems or employees, or those tied to financial reporting may all require additional scrutiny. But many in-house and even outside attorneys don't review software license agreements frequently enough to see the potential pitfalls that may be inherent in the vendor form agreements. This list provides a quick reference on what to watch for, although there are many other potential issues to consider in each individual transaction; it's not meant to be an extensive list of such pitfalls, but rather a quick reference to prompt additional review of important agreement terms.

/1/ License Scope

The licensee must closely consider the scope of the desired license. Whether it will be an enterprise-wide license, per seat license, or concurrent user license, the licensee must confirm the licensing entity and scope of use. For example, it may be desirable to allow affiliates of a parent company to use the software under the same license or allow the parent entity to use a license entered into by a subsidiary. In addition, it should be clear that the licensee's authorized third-party contractors and perhaps even outsourcers will also have the right to use the software without running afoul of the licensing terms.

/2/ License Overruns

The licensee should also consider what happens in the event the license scope is exceeded. This is not unusual in the case of a license scope depending on number of seats or named users. In that event, the licensee will want contract language that provides for payment by the licensee of the additional licenses but will want to minimize any punitive fees associated with unintentional excess use. Vendors often request audit rights to monitor the licensee's use of the software, which may be acceptable if properly worded, but should not be unduly burdensome on the licensee and should not trigger undue penalties for overuse.

/3/ Pricing for Renewal Terms

Software licenses often have initial terms of one to three years and it's imperative that the licensee contemplate and define pricing terms for any potential renewal terms. Consider the alternative: a potential scenario where the licensee has spent significant money and time choosing a software package, implementing the software, and training its employees and then the software vendor, after the initial three-year term, increases the price of the license by 200%. That leaves the licensee in a difficult situation and the legal and business teams facing a difficult conversation with upper management.

/4/ Acceptance Testing Rights

Any software implementation of any level of difficulty should include clear acceptance testing rights for the licensee. Ideally, the licensee should not be obligated to pay any license or support fees (and perhaps no implementation fees, depending on the particular circumstances) until acceptance testing has been performed and the software has passed the tests. Vendors will often point to the software warranty as the licensee's best tool to ensure properly functioning software, but that relies on the licensee then making a claim under the agreement for breach of warranty and may require formal legal action before resolution is reach. It's far better to hold the vendor's first payment in hand while confirming that the software performs as promised in the licensee's environment.

/5/ IP Indemnification and Limitation of Liability

Many times, software vendors omit any sort of indemnification obligation, exclude indirect damages from their potential liability, and cap their liability for direct damages. But the fact is that the party best suited to control and limit potential damages related to possible infringement of any third party's intellectual property rights by the software is the software vendor. Therefore, there should be a clear obligation for indemnifying the licensee in the event of claim regarding such possible infringement by the software or the licensee's use of the software and that indemnification obligation should be carved out from any limitation of liability or liability cap. There may be compromise language that is agreeable based on use of the software as described in the documentation and other exceptions to the indemnification obligation, but in the end the indemnification should be clear and comprehensive.

/6/ Warranties and Maintenance and Support

As I stated before, the software vendor will often point to the software warranty and perhaps support obligations when the licensee looks for a remedy related to the failure of the software to meet the requirements of the agreement. In addition to the acceptance testing rights, it's also important to confirm that the warranty and support terms are appropriate. For example, any language stating that the vendor need to only attempt to remedy any nonconformance should be scrutinized closely. If that warranty states that the vendor will use "best efforts" to address software bugs, then the licensee may end up with software that has unresolved issues for a very long period of time with the only remedy to argue that the vendor isn't using enough effort to resolve the issue. It's preferable to have language stating that the failure to resolve an issue that affects the licensee's use of the software will trigger certain licensee rights, including termination for cause if the issue is not resolved in an agreed period of time.

/7/ Termination Rights

The licensee should contemplate termination or expiration of the agreement and verify that the agreement reflects the licensee's wishes in either event. Depending on the type of software at issue, there may be a desire to have a data extract from the software prior to shutdown, the licensee may wish to engage the vendor in assisting with the transition to replacement software, or the licensee may wish to confirm that the vendor will destroy all copies of the licensee's data in its possession soon after termination or expiration.

/8/ Statement of Work

A statement of work that is part of the license agreement is frequently overlooked by the licensee's legal team. But it's imperative that the SOW be reviewed carefully both to confirm that there is no legal language that conflicts with the terms of the body of the agreement and to ensure that the business terms in the document are sufficiently detailed and measurable to clearly set forth the obligations of both parties. A vague statement of work or one that relies on the parties to work out the details following execution is of little value and does nothing to aid in the timely installation of the software.

/9/ Multiple Agreements

Vendor often rely on separate agreements for the license terms, installation services, and ongoing support services resulting in multiple separate agreements defining the relationship. This mahy be acceptable on its face, but the licensee should confirm that it has clear rights to terminate related agreements in the event one is terminated for cause or otherwise and the licensee should also consider carefully any limitations of liability or other limitations tied to the value of one agreement on its own.

/10/ Minimum Support Term / New Products

Lastly, although I've already mentioned ensuring that the support terms "have some teeth" related to actual resolution of identified issues and bugs, the licensee may also want to add language stating that the vendor will continue to support the software in the version provided to the licensee for some minimum period of time. Again, in this case, the licensee does not want to be in a position of spending considerable time and effort implementing a software package only to find the vendor is moving to entirely different solution in two years. Another consideration is whether the licensee should have the right to move to any replacement software during the support term; although that may be a less than ideal solution depending on what that transition to the new software entails.

As stated previously, this is not a comprehensive list of issues to consider addressing in a standard vendor software license agreement but rather provides a starting place that may prompt additional examination by an attorney who is otherwise unfamiliar with some of the unique intricacies of such licenses.