Tag Archives: LISP

BricsCAD documentation – a tale of three systems – part 3

In this third post in what was supposed to be a two-part series, I have more to say about the BricsCAD documentation system. See here for part 1 and here for part 2.

Developer Help – Addendum

In this comment from Bricsys API person Torsten Moses, he informed me about the availability of the Lisp Developer Support Package (LDSP) in the Bricsys Application Catalog. As always, when presented with new evidence I am prepared to re-examine my position on anything. Therefore, I will now further discuss the BricsCAD developer documentation.

The first thing to mention is that the existence of the LDSP package is not obvious. To somebody who uses BricsCAD as-provided and as goes burrowing down through the Help system looking for information, that system is still broken. The documentation as presented to the user remains sub-standard, exactly as described in part 2.

Assuming you know of the existence of LDSP, how do you go about using it? Here are the steps:

  • Go to the Bricsys Application Catalog site, click in the search field and start typing LDSP (you don’t need to hit Enter).
  • The link to the Lisp Developer Support Package (LDSP) will appear: click that.
  • Enter your email address, accept the privacy agreement and pick Download. (Note in passing that this is actually published by Torsten’s own company, not Bricsys).

  • If you’re already a registered Bricsys user (you will be if you’re evaluating it), the download will start. If not, you’ll be expected to register (free):

  • Once you’re registered, the download results in a 12 MB file called Lisp Developer Support Package.rar (RAR is a ZIP-like format).

Any recent commercial ZIP utility (e.g. WinZip) will open RAR files and there are a variety of freeware/adware/shareware utilities available to do likewise. For example, RAR Opener in the Windows Store will present itself as the first option in Windows 10. But it goes without saying that going off in a hunt for utilities wouldn’t be on anyone’s expected to-do list when just looking for product help. A bunch of people would give up here, if not earlier.

I went through with installing RAR Opener, but when I attempted to open the LDSP file I saw this:

Oh, and a handful of empty folders were produced. Is there an email waiting for me at work with the password (my Bricsys registration email is at work but I’m at home)? Am I really supposed to have a password to open this RAR? If so, why wasn’t I prompted for one? RAR Opener doesn’t present me with that option anywhere I can see. Is the download corrupt? Does it refuse to work on a Sunday? I have no idea.

At this stage, many more would give up. How many prospective customers would be filtered out by this experience? There’s no way of knowing. However, I’m made of sterner stuff and persevered with downloading and installing another app from the Windows Store. 9 zip did the job and uncompressed the file, no password required.

Yes, the RAR Opener problem I had above isn’t a Bricsys problem directly. But it is indirectly, because the file I was given to deal with won’t open by default in Windows, where the vast majority of BricsCAD users will be working. It’s a level of obfuscation that you can get away with when dealing with cellar-dwelling geeks handling obscure pieces of open source software. It’s not appropriate for customer-facing documentation in a mainstream CAD application. Yes, even developer documentation, because with CAD applications like AutoCAD and BricsCAD, most of the developers are customers/users/managers, not people trying to sell utilities.

Once you manage to get the file uncompressed (it becomes 41 MB), there are three help systems provided in there (CHM, PDF, HTML). That’s excellent, and conforms nicely with the Bricsys philosophy of providing customers with choice. I was unable to find any broken links. However, even in the LDSP, standard AutoLISP functions are undocumented. So I still couldn’t find the (entget) help I was looking for in part 2:

According to Torsten:

…the standard AutoLISP functions like (entget) are not documented, as there are plenty docs on the web for this; but we document any extension beyond AutoLISP standard, even for the standard functions.

Sorry, but while “we don’t have that information but you can Google it” might have been an acceptable answer for a cheap AutoCAD clone’s API documentation ten years ago, that’s not where BricsCAD is today and most definitely where Bricsys wants it to be in future. Just two days ago, Bricsys CEO Erik De Keyser sat across a table from me and told me that BricsCAD isn’t intended as merely an AutoCAD alternative, but must go well beyond that in order to prosper. He’s right. The BricsCAD developer documentation today is not compatible with that vision. I know it’s that way for historical reasons, but we’re now at a different point in the historical timeline.

Conclusion – Addendum

My conclusion from Part 2 remains valid, despite the existence of LDSP. Both Autodesk and Bricsys have work to do. Downloading LDSP will help with some of the BricsCAD developer documentation failings but leaves plenty behind. It also provides its own set of unfortunate challenges.

This isn’t just a technical and ease-of-use failing, it’s a marketing one. That’s because it acts as a stumbling block to conversion of AutoCAD sites to BricsCAD. Disaffected AutoCAD power users in small sites and CAD Managers from large sites are right now taking tentative steps to evaluate the suitability of BricsCAD to replace AutoCAD in their complex LISP-heavy custom environments. They’ll want to know what’s the same and what’s different so they can estimate the effort and cost involved in the transition before getting in too deep. I know this, because I’ve done it myself. The first thing they will come across in their search is disjointed, very inconvenient and incomplete. It presents a less-than-professional image.

Some potential customers, like me, will persevere and discover that the quality of the developer tools implementation far exceeds the expectation generated by the documentation. Others will give up well before they reach that stage, and that’s a shame.

BricsCAD’s LISP kicks sand in the face of AutoCAD’s

If you’re a power user or CAD Manager transitioning from AutoCAD to BricsCAD, one of the things you’ll like is that almost all of your LISP routines will just work. That’s not an statement that can be made about various Autodesk products that bear the AutoCAD name, such as AutoCAD 360, AutoCAD LT and AutoCAD for Mac.

It’s not just simple old AutoLISP code that runs in BricsCAD, but complex dialog routines that use DCL, and Visual LISP stuff that uses ActiveX. Yes, even on the Mac and Linux platforms. Some DOSLib functions are built in and the rest can be loaded, as with AutoCAD. Even OpenDCL is supported. It’s a quite astonishingly high level of compatibility.

But it’s not 100%. There are minor incompatibilities, system variable and command-line differences that cause problems in a handful of cases. It’s often possible to work around these and still retain the same code that works in both AutoCAD and BricsCAD. Reporting LISP bugs and incompatibilities to Bricsys generally gets them fixed super-quick.

Also super-quick is the speed at which your code will run. It’s immediately noticeable when running any LISP code that needs to do a bit of processing that it just gets done faster in BricsCAD than AutoCAD. Fast enough to extract the following comment from one of my AutoCAD users trying out a linework cleanup routine in BricsCAD:

Wow.

 
User impressions are one thing, but how about measurements? Today, I had a support job to do that involved running one of my LISP routines. I ran it on both AutoCAD 2017 and BricsCAD V17 on the same PC. AutoCAD took 2970 seconds (about 49 minutes), BricsCAD 1030 seconds (about 17 minutes). Over half an hour saved on one operation. That’s 2.88 times faster, which is consistent with my previous observations with a variety of routines.

Upshot: if you’re doing work where there’s a lot of LISP processing going on, switching to BricsCAD is going to save you a shedload of time.

There is a downside to BricsCAD’s LISP, and it’s a big one; no VLIDE. No equivalent, either. There are various programming editors around that can help with editing code, but no substitute for integrated debugging. It means if you’re a power user, CAD Manager, developer or support person, you’re probably going to have to keep one working copy of AutoCAD around even after you’ve completed the transition to BricsCAD.

Because VLIDE has been in maintenance mode for over 15 years it remains virtually unchanged year after year (including ancient bugs). So it doesn’t matter that much which AutoCAD release you have hanging around. Assuming you’re a perpetual license holder, when you drop the maintenance contract on one of your AutoCAD licenses, you’re entitled to keep using the software as long as you wish, albeit only the current release at the time the contract ends. How long the software will keep working is another matter, depending as it does on factors not entirely within your control.

This is an imperfect solution. Even keeping a copy of AutoCAD around won’t help much if you’re debugging a problem caused by something specific to BricsCAD. Filling the VLIDE hole is something Bricsys needs to work on.

BricsCAD startup LISP bug fixed

In my previous post I have a real problem with BricsCAD, I related my then-latest interaction with the Bricsys support system:

Steve Johnson
05-12-2016 05:30 UTC

I don’t know if this is a BricsCAD problem or a DOSLib one, so I am reporting it to both Bricsys and Dale at McNeel. I’m also not sure if this was happening in earlier versions.

If I load DOSLib during an S::STARTUP call and then use the (dos_msgbox) function later in that call, this fails the first time round because BricsCAD things the function is not defined. Opening a second drawing results in the call working as expected. I’ve chopped down our startup routine so you have an example.

; error : no function definition ; expected FUNCTION at [eval]

Awesome Bricsys Person
05-12-2016 12:32 UTC

Hi Steve,

There was a regression introduced in V17.1.10 that caused startup code to execute too early under certain conditions, before the lisp engine document context was properly initialized. This has been fixed now for the next update.

Steve Johnson
06-12-2016 02:43 UTC

I must say, the responses I’ve been getting to my support requests have been absolutely bloody brilliant. Cheers!

Let’s just finish the sequence, shall we?

Second Excellent Bricsys Person
13-12-2016 19:18 UTC

Hi Steve,

I have very good news. The fix is included in BricsCAD V17.1.11, available for download.
Thank you for your help.

Following a fast and straightforward download and install, I can confirm that the bug is fixed. The elapsed time from my bug report to the fix being publicly available and me being informed personally of the fact was 8.5 days. Note that this isn’t a workaround, patch or service pack, it’s a permanent fix that is now automatically in place for everybody who downloads the software.

Edit: the new version was actually released at 4 PM on 9 December, so it was less than 4.5 days from report to fix. Outstanding!

I should mention that I also received a prompt and relevant response from Dale at McNeel, despite the fact that the problem was nothing to do with him!

For somebody used to dealing with Autodesk, this is a breath of fresh air. Bricsys team, take a bow!

LISP programmers, have your say again

Autodesk wants your input again in its annual API survey. This used to be a closed survey for Autodesk Developer Network (ADN) members, but has been open to all for the last few years. If you do any AutoCAD-based development at all, I encourage you to take part. That includes those of us who do most of our development in LISP.

Here’s the direct link to the survey. As you can see if you click the link, there’s a lot of stuff in there that assumes you’re keen to get developing for AutoCAD WS. If you’re not quite so filled with Cloudy enthusiasm and would prefer Autodesk to expend its resources elsewhere (on fixing and improving Visual LISP, for example), please fill in the short survey and say so. It closes on 22 June, so you only have a week.

Why bother, when it’s obvious that Autodesk is determined to ignore to death its most popular API regardless of whatever anyone says or does? I’m not sure, really. Maybe I’m an eternal optimist. (Ha!) Maybe I just want them to at least feel slightly guilty about sticking their fingers in their ears and going “LALALALALA! NOT LISTENING! WE HAVE A VISION, NOT LISTENING! LALALALALA!”

Programmers, have your say

Autodesk wants your input in its annual API survey. What used to be a closed survey for Autodesk Developer Network (ADN) members has been open to all for the last couple of years, and if you do any Autodesk-based development at all I encourage you to take part. Yes, that includes those of us who do most of our development in LISP. In fact, I am especially keen to see LISP developers adequately represented in this survey.

This is a one-page survey and it doesn’t take long. The full list of API surveys is on Kean Walmsley’s Through the Interface blog. Most of you would be interested in the AutoCAD survey, so here’s a direct link to that.

Kean assures us that our feedback will not fall on deaf ears, although I have yet to see any evidence of that in terms of any change to Autodesk’s decade-long policy of total LISP neglect. I guess many of us gave up hope of any improvement years ago and can’t be bothered providing feedback any more. Please don’t give up. Fill in the survey and let Autodesk know you still exist.

CAD International interview on drcauto and other subjects

This morning I spoke with CAD International‘s Nigel Varley. Here is a paraphrased summary of the interview.

SJ: When did CAD International buy the drcauto intellectual property rights?
NV: About two weeks ago.

SJ: You are currently helping drcauto customers with authorisation codes, is that correct?
NV: Yes, masses of them. It’s taking up a lot of our peoples’ time.

SJ: Are you charging for this service?
NV: Not at present.

SJ: Do you intend to charge for this service in the future?
NV: Maybe. We may need to, both to pay for our time and to recoup our investment. I don’t particularly like the idea of annual renewals for software, so we may do something different in future.

SJ: If somebody wanted to buy drcauto products such as LT Toolkit now, could they do so?
NV: No, we’re still processing the materials we were given when we bought the rights. It wasn’t left in a well-organised state. I’m not sure if that was done deliberately or if it was just like that.

SJ: Do you have any plans to continue development of LT Toolkit or the other drcauto products?
NV: It’s too early to say at this time. I understand it doesn’t work right now with AutoCAD LT 2010 with Update 2 applied, or on 64-bit Windows, or on Windows 7. It’s not clear at this stage how much work is involved in making it work. It should be doable, but we can’t make any commitments at this stage.

SJ: So do you have a timeframe for doing any of this stuff?
NV: No, it’s too early. We’re still processing it.

SJ: What about former drcauto employees helping people out with authorisation codes?
NV: They have no rights to do that. They don’t own the intellectual property, we do. People need to be very careful.

SJ: Are you contemplating legal action?
NV: I think I’ll keep that under my hat for now.

SJ: Do you foresee any problems with Autodesk if you go ahead with LT Toolkit?
NV: I don’t think so. Autodesk would be pretty naive, with competing products around at a lower price than LT and with LISP built in, to think that they would gain any sales by blocking LT Toolkit. They would just be shooting themselves in the foot.

SJ: Autodesk has always been strongly opposed to products like LT Toolkit. Are you concerned about legal action from Autodesk?
NV: Well, people say that Autodesk has been against it, but I haven’t seen any evidence of that. When I spoke to the late Gary D’Arcy he told me that Autodesk had never once even contacted him to try to get him to stop developing it.

On Deelip’s blog there has been some discussion about resellers and what they should be allowed to do, so I asked some questions along those lines.

SJ: What is the relationship between CAD International in the USA and Australia?
NV: We’re an Austalian company, moving into the US marketplace for those people in the USA who want to buy our products. We don’t have offices in the USA, but we do have people on the ground.

SJ: Is CAD International an authorised AutoCAD reseller?
NV: No. We’ve been selling Autodesk products for 15 years without a direct relationship. We buy from Scholastic like everybody else in the same position. It’s not worth becoming a dealer; the obligations are too great and the margins are not worthwhile. We’ve been asked on several ocasions over the years and always said no.

[Note: I’ve since read (in something written well before this issue was raised here) that Autodesk Australia intends to tighten up the reseller situation in the very near future. These things go in cycles, and have for the last 25 years.]

SJ: Does Autodesk have a problem with you promoting competing products such as Bricscad?
NV: They have never spoken to us about it in the past, but as we don’t have a direct relationship with them it’s not surprising.

SJ: I see from your web site that you are selling DWG TrueView for $195. Isn’t that a free product?
NV: That fee is for supply services; research services if you prefer. People can download it from Autodesk if they like or get it from us. We just put it on the site as a trial to see if anybody wanted to buy it.  Nobody has, yet.

SJ: I can’t say I’m greatly surprised by that. Has Autodesk contacted you about this issue?
NV: No, we’ve heard nothing from Autodesk. They don’t really care about us, we’re a pretty small player in the market.

[Edit: the $195 price tag has since vanished from the site.]

More on drcauto, LT Toolkit and CAD International

Things have moved on since my first post on this subject in which I passed on the information that Leonard Liang (a former drcauto employee) could help with codes for LT Toolkit orphans. In recent developments

  • In a comment in a WorldCAD Access post, Nigel Varley from Australian company CAD International stated that they had bought the intellectual property rights to the drcauto software, and that drcauto codes and software obtained from former employees are illegal.
  • Another comment on the same post from former drcauto employee Kevin J Secomb lamented the demise of Gary D’Arcy’s dream and criticised CAD International for indicating in an email to users that they would charge for authorisation codes.
  • CAD International created a web page describing the situation with regard to drcauto products, including a statement that it would “offer immediate assistance to those needing new authorisation codes”.
  • Deelip Menezes made a blog post on the subject, followed by another one containing a reaction from Autodesk’s Jim Quanci. Poth posts are worth reading, as are the comments from various observers. The first post went off at a bit of a tangent about Autodesk’s apparent benevolence towards resellers that don’t toe the corporate line (drcauto is still listed as an Authorised AutoCAD reseller a decade after being dropped by Autodesk). The second post included words from Jim that the late Gary D’Arcy was a great character, albeit a pain to Autodesk. Having met Gary many years ago and followed the story of LT Toolkit with interest, I can confirm the truth of both statements.

I thought I would have a chat with CAD International’s Nigel Varley to see if I could clear up the situation as he sees it. It was a very interesting interview, the results of which I will publish very soon.

Hope for drcauto LT Toolkit orphans

LT Toolkit from the now-defunct drcauto was an add-on for AutoCAD LT that provided LISP and other capabilities that Autodesk disabled. Autodesk hated this, of course, but the late Gary D’Arcy made sure everything was done legally so it couldn’t be stopped even by Autodesk’s hyperactive legal team.

If you are a user of LT Toolkit and you want to keep using the software now the company has closed down, you may find this information from Evan Yares useful:

I’ve gotten in contact with Leonard Liang, the former key developer at DRCauto. He’s asked me to send any Toolkit Max users to him, and he will help them. His website is www.cadsta.com. His email, at that domain, is “leonardl”.

Source: a comment in this this WorldCAD Access post. If you don’t read comments, you may well have missed this, so I thought it was worth repeating.

Edit: events have overtaken this news since it was written. Please see here and here.

AutoCAD virus protection update

As I mentioned in my last post, I had some reservations about the code provided by Autodesk to deal with suspect acad.vlx and logo.gif files. Based on a suggestion from Jimmy Bergmark, I have written my own, safer version which you can download here: clean_virus_safe.lsp.

The comments at the top of the clean_virus_safe.lsp file explain what to do with it, but I will reproduce some of the relevant points here.

  • Purpose: Checks for existence of acad.vlx and logo.gif files, which are associated with virus AL/Logo-A, also known as ACAD/Unexplode, ACAD/Agent.A or ACM_UNEXPLODE.B. Written as a safer alternative to Autodesk’s code which deletes suspect files without prior warning. This code renames the files instead.
  • Legal: Provided as-is with no warranty whatsoever, use at own risk. May be distributed freely.
  • Usage: Append the contents of this file into a startup LISP file (e.g. acaddoc.lsp in your search path – create such a file if it does not exist). Autodesk’s suggestion to modify the acad20xx.lsp file should not be followed: this is bad practice. The acad20xx.lsp file is Autodesk’s file and any modifications you make to it are likely to be lost when updates and patches are applied.
  • Effects: Any and all files named acad.vlx and logo.gif and located in AutoCAD’s search path will be renamed, e.g. “acad.vlx” will become “[Suspected Virus] acad.vlx0”. The name will end in a number starting with 0. If other suspect files are later found in the same location, those files will be renamed to end with 1, 2, 3 and so on.

I don’t have a copy of the actual virus, and would like to get hold of one with a view to possibly improving this code. If you have a copy, I would be grateful if you could contact me so I can dissect it.

What is loaded at AutoCAD startup, and when?

Warning, CAD nerd stuff ahead. This is a long and technical post and if you’re using AutoCAD in a largely out-of-the-box state you probably won’t care about any of it.

If your modification of AutoCAD extends beyond the trivial, you may find it useful to know what AutoCAD loads, and in what order things are loaded. It is possible for LISP files in particular to tread on each other’s toes, so knowing what gets loaded when can be useful information for diagnosing such clashes. This post aims to provide that information. It uses AutoCAD 2009 as an example, but the same principles apply to all releases from AutoCAD 2006 onwards.

On startup, the first things AutoCAD loads are its CUI files. It first loads the Enterprise CUI file, then the Main CUI file, then any partial CUI files attached to the Main, then any partial CUI files attached to the Enterprise. I have no idea of the reasoning behind this slightly strange order, but there it is. The order of the partial CUIs loaded in each case is determined by the order in which they appear in the parent CUI files, which is determined by the order in which you attached them. If you don’t like this order, you can attach and reattach them in the CUI interface, or you can do the same thing much quicker with a text editor if you feel confident enough. If there are LISP files associated with these CUI files, they are not loaded yet. You’ll need to wait a few paragraphs for that.

Next, if you have created a file called acad.rx in AutoCAD’s search path, any ARX files listed in that file will be loaded. There are other ways in which developers can load their ARX files at startup, but I won’t go into that here.

Following that, the acad*.lsp files are loaded. First, Autodesk’s acad2009.lsp file is loaded. Next, if you have created a file called acad.lsp, that is loaded. These two files are only loaded at first startup, unless the ACADLSPASDOC system variable is set to 1, in which case the acad.lsp file is reloaded with each new drawing. Next comes Autodesk’s acad2009doc.lsp and any acaddoc.lsp file you may have created, in that order. These two files are loaded at startup and with every new drawing session.

It’s worth pointing out here that the acad200x.lsp and acaddoc200x.lsp files are Autodesk’s and are not intended to be modified by users. You can modify them, and adding things in there works fine, but updates and hotfixes can overwrite these files, leaving you to patch things up again afterwards. The acad.lsp and acaddoc.lsp files are yours, and that is where you are best advised to put your additions.

I hesitate to mention VBA because I have long avoided that development environment and my knowledge in that area is very limited, but if you’re a VBA developer and have created an acad.dvb file in AutoCAD’s search path, it gets loaded at this point.

Once the acad*.* files are loaded, then come any LISP files associated with the CUI files that were loaded at the beginning. For each CUI file, if there is a *.mnl file of the same name, that will be loaded first (*.mnl files are just *.lsp files renamed). After that, any LISP files that are specified in the CUI file will be loaded, in the order in which they appear in the CUI file itself. This order can be modified in the same ways that the partial CUI loading sequence can be modified; “delete” and “load” (detach and attach, really) the files within the CUI interface, or hack the CUI file with a text editor.

The CUI-associated LISP files are loaded as described in the above paragraph for each CUI file in turn, in the same order as the CUI files themselves: Enterprise, then Main, then partials to Main, then partials to Enterprise.

The Appload command provides a Startup Suite facility, where you can specify any number of files to load (*.arx, *.lsp, *.dvb, *.dbx, *.vlx or *.fas). If you have done so, those files are loaded at this point, in the order in which they appear in the Startup Suite list.

That’s all the actual loading done, but we’re not finished yet. At this point AutoCAD’s environment should be all ready to do pretty much anything, including things that modify the drawing database, including invoking commands. This was not true earlier on, so if you want to do things like change the drawing or run commands, this should be done using a startup routine rather than called directly at load time from any of the files loaded above.

If you’ve defined a VBA sub called AcadStartup(), it will be called now. If starting a new drawing, any sub called AcadDocument_Activate() will be called instead. The caveat about my VBA ignorance still applies here.

If a LISP function called (S::STARTUP) has been defined, it will be called next. Where could that be defined? Anywhere in any of the LISP files mentioned above, or in any LISP or other files that are loaded by any of those files, or by any files that are loaded by any of those files, and so on ad infinitum. It could even be defined in one of the ARX files loaded at any point. This would be unusual, but is quite possible.

If there are multiple (S::STARTUP) functions defined in various places, which one wins? Whichever one loaded last. That’s why the load order can be important, but it’s also why you should never have an unconditional (defun S::STARTUP …) definition in your LISP code. Instead, you should append your startup code to any existing (S::STARTUP) function. That way, your startup can cooperate with any others in your environment rather than walking all over it. If there is some interest in that subject, I can cover it in more detail in a future post.

In summary, here is the AutoCAD startup sequence:

A. CUI files loaded:
1. Enterprise
2. Main
3. Partials to Main
4. Partials to Enterprise

B. acad*.* files loaded:
1. Files listed in acad.rx
2. acad2009.lsp
3. acad.lsp
4. acad2009doc.lsp
5. acaddoc.lsp
6. acad.dvb

C. CUI-associated MNL and LSP files loaded:
1. Enterprise named MNL
2. Enterprise loaded LSP and MNL
3. Main named MNL
4. Main loaded LSP and MNL
5. Partials to Main named MNLs
6. Partials to Main loaded LSPs and MNLs
7. Partials to Enterprise named MNLs
8. Partials to Enterprise loaded LSPs and MNLs

D. Startup suite files loaded

E. Startup routines run:
1. AcadStartup() called (AutoCAD startup)
2. AcadDocument_Activate() called (Drawing startup)
3. (S::STARTUP) called

Autodesk University Session Voting

This year, the Autodesk University people are allowing you to vote on the various sessions (classes). Here’s the link:

AU 2008: Help Us Select the Sessions

If I can sort out a few practical details, I am hoping to attend this year as a speaker. I have submitted four session proposals. These are:

Customization and Programming

Be unfashionable in style with LISP and DCL – Introduction
Be unfashionable in style with LISP and DCL – Intermediate
Be unfashionable in style with LISP and DCL – Advanced

Business

How to make a great CAD blog for next to nothing

If you intend attending AU this year, I encourage you to vote for the sessions you would like to see presented.