Phone800.366.3472 SupportGet Support DocumentationDocumentation Resource CenterResource Center
search
close
Open Menu

Synergex Blog


Announcing Synergy/DE 11.1.1g

By Steve Ives, Posted on February 26, 2021 at 3:33 pm

Steve Ives

Synergex is pleased to announce the immediate availability of Synergy/DE 11.1.1g, a quality release that includes a wide range of improvements across the entire Synergy product line. We strongly encourage all Synergy developers to review the release notes for detailed information about everything that changed.

Besides a significant focus on quality, we have also made several feature enhancements in our Visual Studio integration tools, enhancing the developers’ experience and improving their productivity.

First off, we have introduced collapsible-region support for many DBL statements and other language constructs. For example, some of the now collapsible statements include BEGIN-END blocks, USING-ENDUSING, CASE-ENDCASE, IF-THEN-ELSE statements, and more. This feature was specifically requested and voted on by developers in the Synergy Ideas Forum.

We also added support for activating the go-to-definition feature via mouse clicks, in addition to using the existing keyboard shortcut-based mechanism. The default behavior is activated via Ctrl + Left-Click but is customizable in the Tools/Options dialog under Text Editor settings.

Another area that we focused on is improving the accuracy of those “red squiggles” that show up in your code when something is wrong and occasionally when something is not wrong! Inaccurate red squigglies should occur less frequently now, although we do know that have some additional work still to do in this area.

To give developers more options when they need to get in quickly and look at something specific, especially in solutions with large numbers of projects, we also implemented support for Visual Studio 2019’s “Filtered Solution” feature that allows you to check a “Do not load projects” option in the Project Open dialog. Visual Studio opens the solution very quickly when you do this, but all projects are in an unloaded state. The developer can then select the projects they wish to work on in Solution Explorer and use the “Reload Project” context menu to load them. The context menu then includes options to allow you to load either direct dependencies or all dependencies of the projects you loaded, meaning that you can quickly get to a buildable scenario without having all projects loaded. Solution Explorer also has options to show or hide unloaded projects.

Having filtered your solution the way you want it, you can then use the “Save as Solution Filter” context menu to save the state of your solution for the next time you need it that way. The file is saved as a .slnf file and can be reopened the same way you open the solution.

We have overhauled our project build system, reduced memory usage, and improved performance for Visual Studio and command-line builds. And at the same time, we have improved and standardized the way they interact with MSBuild, allowing us to adopt new features more quickly.

And armed with our new MSBuild capabilities, we added support for a new feature known as /graphBuild, making pre-build analysis of inter-project dependencies work much more effectively. In turn, MSBuild can now more effectively perform parallel builds of multiple projects simultaneously, in some situations resulting in improvements in overall build time.

We are confident that most developers should experience improvements in overall build times across the board, particularly for traditional Synergy projects. And in some cases, with the right combination of projects and resources, those improvements could be significant.

For example, suppose you have a small number of base libraries used by a large number of higher-level projects. In that case, once those base libraries have been built, there is a good chance that higher-level projects can build in parallel, with the overall process completing more quickly. The more CPU and memory resources that are available, the faster things can proceed. In some environments, such as on dedicated build servers running CICD pipelines, we have seen improvements of up to 30 – 40% in overall build time as compared to the previously released version. But improvements of that order do require access to considerable resources; most improvements will be more modest.

If you’re already using Visual Studio to develop your Synergy code, we encourage you to upgrade to this new version as soon as possible; remember, you can always use runtime version targeting if you’re not ready to upgrade your production systems. And don’t let the fact that you only develop traditional Synergy code or deploy to Unix, Linux, or OpenVMS deter you; Visual Studio can make a great development environment for those scenarios too! Talk to your Synergex account representative for more information.


9 Windows Tips and Tricks You Should Know

By Jerry Fawcett, Posted on February 23, 2021 at 1:45 pm

Avatar

Over many years of being immersed in Microsoft Windows, I’ve come across a few tidbits I think are worthy of sharing. Some of these you may know about, but I hope you find something new here.

1. Opening a command prompt in File Explorer

So, you’re in File Explorer and you want to open a command prompt in the current location. The easiest way is to simply type “cmd” (without the quotes) in the address bar, and there you go: a command window opens to that location. You can also run other commands the same way. Go ahead: type “notepad” into the address bar of File Explorer for yourself. Conversely, you can use a command prompt to open File Explorer in the current location. To do so, issue either of the following commands in the command prompt: “start.” or “explorer .”.

2. Auto inserting the date and time in Notepad

I use Notepad all the time for taking quick notes. Try pressing F5 when you’re in Notepad. This will enter the time and date, which is useful for marking when an entry was made.

3. Changing configuration settings with MSConfig

Many already know about this utility, but it’s worth mentioning for those who don’t. MSConfig.exe is a built-in Windows tool for controlling such things as the manner the next startup boot will occur (normal, diagnostic, or selective), which services will run, and a list of other built-in tools. It’s very powerful, so use it with care. You can find more information here.

4. Understanding system errors

A quick way (yes, quicker than Googling) to look up a Windows system error is to use the command “net helpmsg errornumber”. For example, if you want to know what system error 5 means, enter this at a command prompt:

     C:\>net helpmsg 5

     Access is denied.

5. Activating speech recognition

Tired of typing? No problem: Windows has a built-in solution that allows you to talk to your computer and give your hands a break. To enable this tool, start by pressing the Windows key +H.  This will prompt you with a link to Settings to enable speech recognition. Toggle it on, and the next time a text field is in focus, you can turn listening mode on with Windows key + H. When you start talking, your computer will start typing for you. You’ll find handy documentation on how to use this feature at Windows Speech Recognition commands.

6. Organizing windows

Say you want to re-arrange the windows on your screen. Pressing the Windows key and the right or left arrow will snap a window to either the right or left side of the screen. But what if you have four windows and you want one in each corner of the screen? Well, that’s easy: just grab a window, drag it to the corner of the screen until you see the outline of the window, and then release it. Repeat this for each corner.

7. Accessing control settings with Windows Master Control Panel

There is something called Windows Master Control Panel, aka the God Mode folder. (Don’t blame me; I didn’t name it.) It’s a folder with shortcuts to many different Windows administrative/management settings and Control Panel tools in a single location. To create it, one must be logged in as Administrator (of course), and then simply create a new folder and give it the name 

     SomeName.{ED7BA470-8E54-465E-825C-99712043E01C}

For example,

     GodMode.{ED7BA470-8E54-465E-825C-99712043E01C}

8. Deleting files

It is well known that when a file is deleted it is not truly deleted, but the space the file consumed is now marked as available. However, if you want to make sure a deleted file is actually deleted and not recoverable (by freely available tools), then the space the file consumed needs to be overwritten. There are plenty of third-party tools that will do this, but why bother getting one when Windows has a built-in tool? To overwrite free space in a particular directory or even a drive so the deleted files are not recoverable, use the cipher command. For example, to overwrite free space in the folder C:\Temp, issue the command

     cipher /w:c:\Temp

To overwrite all the free space on the D: drive, issue the command

     cipher /w:d

And of course, a tool named “cipher” can also encrypt files or directories.

9. Checking battery status

Want to know the state of your laptop’s battery? No problem. Use the powercfg command to learn everything about your battery’s current state. Note: Powercfg must be run in an Administrator command window. While powercfg has many options, the two I find most informative are /batteryreport and /energy. When powercfg is run with /batteryreport, it will create an HTML file named battery-report.html with pretty much all there is to know about your battery’s usage and history statistics.  When run with /energy, powercfg will create an HTML file named energy-report.html with a “Power Efficiency Diagnostics Report” that contains all kinds of information on the battery’s current status. For more information about powercfg, visit Powercfg command-line options.

This is only a drop in the (bit) bucket of Windows tips and tricks, so please share the ones you’ve discovered.


When is a page not a page? And when should it act like one?

By Liz Wilson, Posted on February 12, 2021 at 11:30 am

Liz Wilson

The Synergy developer interested in RESTful web services may have noticed a few intriguing things about this liminal era between Web 2.0 and Web 3.0. For starters, a page refresh is not guaranteed each time you navigate to some new corner of a website or app. When it comes to the “traditional” concerns of HTML, Javascript, and CSS—despite what The Offspring may claim—you no longer have to keep ‘em separated. The list of ways that frameworks like Vue, React, and Angular have changed both user and developer experience is extensive, and taken together, all these changes allow for unique and dynamic websites and applications.

That said, while innovation has the potential to take us further from the traditional experience of clicking a link and waiting for a new page to load, there are a few characteristics of those webpages from the early 2000s that the front-end folks would be amiss to innovate away from. Here are just a few!

1. Specific, Descriptive Title Elements

The HTML title element, demarcated by the <title> tag, is meant to provide a succinct description of the document that the browser has just rendered. If you are one of those people who has anywhere from 5 to 50 browser tabs open at any given moment, you probably rely heavily on page titles, as they appear in the tab next to the site’s custom icon.

A specific and descriptive page title is not just beneficial for compulsive tab openers like me, however. Unique titles with more, rather than less, information can improve the search engine optimization of your site. Additionally, page titles are often the first component that screen reader users will refer to in establishing where they are in a site. So adding a company name next to “Home” or “About Us” is a helpful enhancement, as is including information about changes to the page’s state.

For example:

<title>Error – password invalid – Acme Corp: Login</title>

The title element lives with other metadata in the “head” of the document, so it’s not displayed on the page and is therefore relatively easy to neglect. And when you’re working with tools like Angular and React to create single-page applications, you’ll find yourself with one HTML file in your project folder, which means just one <head> section where a title element would obviously be placed. Fortunately, most of these frameworks and libraries have developed tools for generating dynamic page titles.

ASP.NET Core Razor Pages

To ensure that your page titles are being updated dynamically, use the ViewData attribute either in the page’s model (as demonstrated in the documentation) or its .cshtml file. In either case, make sure that if you use Layout, the title element is reading from the ViewData dictionary. If you follow the standard instructions for creating a Razor Pages web application, this is the code you will see in the _Layout.cshtml file:

React

For a similar effect in your React app, install the React Helmet node package. Once that’s done, it’s a simple matter of importing Helmet and adding the document head information within <Helmet> tags within components as needed.

Angular

Similar to React, Angular projects contain a single index.html file, and that’s it for documents with the traditional head/body structure. Angular’s data binding can’t access anything outside of the body tag, so in order to display different titles as the user navigates around the app, you need to use the Title service, which is a very simple class consisting of two methods: getTitle() and setTitle(). The Angular documentation provides clear examples of how to incorporate this class into your application.

2. Semantic/Logical Headings

Whether your site is built with HTML and “vanilla” JavaScript or the client-side framework your cousin’s cousin created last week, at the end of the day, a document object model will be created by the web browser from HTML—whether that HTML was manually written by you or not. The DOM is a cross-platform interface that represents HTML as a tree structure by organizing all the markup’s elements, attributes, and text nodes into objects and creating a logical hierarchy from these objects. The technology was developed in the early days of JavaScript to enable client-side interactivity, and nowadays, the DOM also serves as the foundation for the browser’s accessibility tree, which is a critical layer that allows screen readers and other assistive technology to make sense of the contents of a website. Objects within an accessibility tree contain information ranging from what the specific element is (e.g., heading, input, etc.) to whether the element has a state (e.g., checked or unchecked, collapsed or expanded).

With that in mind, while current design trends indicate that the amount of text on each page remains in decline, it’s still a good idea to create a logical hierarchy of information and use different heading elements accordingly. This will not only benefit assistive technology users, but also the large swaths of us who have been conditioned to look for a big ol’ heading in a prominent position on the page. So even if the page is not technically a page, make sure the main heading is contained in a heading tag (probably an <h1> or <h2>) and the information that is less important is organized under the subordinate heading levels (<h2>, <h3>, <h4>…).

3. Logical Focus Order

In the same way that you may need to apply more thought with new web architectures, it’s very likely that you will have to expend some amount of effort to manage keyboard focus to replicate the way that focus operates in regular old HTML documents. In a traditional website (barring questionable use of CSS), a keyboard user can tab through each page in such a way that mimics the visual flow of information: left to right, top to bottom. In a single-page application where new HTML documents are not actually being loaded in the browser, there is nothing that would necessarily prompt keyboard focus to jump to an element at the top of a new page, because there is no new page. The Angular website (built, naturally, with Angular) provides us with an example of this. If you tab to the footer section from Home and select About, rather than hopping up to something intuitive, like the links at the top of that “page,” your next tab will take you to the next item in the list of footer links.

There are other potential issues relating to mutable content, including focus effectively disappearing, or users getting shot back up to the top of a section if a button is replaced by some other UI component.

Again, today’s popular libraries and frameworks propose techniques for providing a good experience for keyboard users:

To conclude, there is no reason for the not-pages that make up your single-page application to look like they were built in 2006. However, a case can be made for ensuring that certain aspects of the early web experience are not thrown away with the bathwater.1


1The bathwater consists of jQuery, Flash, and frames.


CodeGen 5.6.6 Released

By Steve Ives, Posted on February 5, 2021 at 3:05 pm

Steve Ives

A quick post to announce the availability of CodeGen 5.6.6.  This is a quality release that addresses an issue that could occur when generating code from templates containing certain complex expressions. In particular, several Harmony Core templates contain such complex expressions, so we recommend that all Harmony Core developers upgrade to this new version of CodeGen at their earliest convenience. As always, documentation for this new release can be found at https://codegen.synergex.com.


Don't miss a post!

Enter your email address to subscribe to this blog and receive notifications of new posts by email.

Recent Posts Categories Tag Cloud Archives