Minor Upgrades/Bug Fixes
- Minor web cart fix
- Minor window title fix
- Order totals fix
Pallet % to Per Pallet The way pallet % was calculated, using a percentage, was too easily skewed (either too many or too few depending on rounding). This update changes the current pallet % to the total number of the catalog items that will fit on the pallet. For example 50% changes to 2, 25% changes to 4, etc. When adding new Per Pallet data, you now choose the quantity of a catalog item that fits on one pallet.
This is one of the largest technical upgrades in the past 10 years. It has taken over a year of programming to bring it altogether. It centers on making PlantX faster and more reliable in daily use.
There are an average of 200 user connections to PlantX daily. Added to that the hundreds of web users that come and go. Included are upwards of 5,000 reports run each week. Demand for PlantX is growing and these changes were required to ensure PlantX can meet the continued increase well into the next decade.
- Durable Connections
- Improved Database
- Data Integrity
- No Hesitations
Durable Connections As the Internet
has gotten faster, it has come at the cost of reliability. When PlantX was started in 2001,
the best connections you could get for your office were modems, DSL and occasionally cable.
But once your computer was connected to the Internet, you could connect to PlantX and that
connection was good all day. The connections were slower, but also steady and consistent.
Entering the modern era, connections are MUCH faster but they’ve become unreliable. Over the past few years we noticed some customers getting disconnected randomly and more often. This was unacceptable and we started looking deeper into the cause. It turns out modern network routers are sub-standard.
We solved the first problem by helping some members install professional routers. These are much better than the ones you get at Best Buy, but not as plug-n-play friendly. They made significant improvements, but we can’t afford to install equipment for everyone.
The second problem was much more subtle and nefarious; connections were deliberately dropped or blocked by their Internet Service Provider (ISP). The connections were dropped to thwart file sharing. So if you weren’t browsing the Internet or streaming a movie, your connection was vulnerable. Since PlantX didn’t look like someone browsing the Internet, the connection was expendable.
This required months of work to re-engineer the communications to use the same protocol used by web browsers. In late May, we released those updates and PlantX is now indistinguishable from any other web traffic. To the Internet providers, PlantX just looks like a busy website.
Improved Database In early June, we
upgraded the database software that underpins the PlantX server. The database upgrade included
some long awaited features that could improve PlantX performance. We applied the features in a
set of trial transactions. The trials were successful, showing a marked improvement in
At that time we decided to upgrade all 500+ transactions (e.g. add order, change order item, add product, etc.) We then spent the next 90 days straight modifying each operation to comply with the new database standards. And to ensure each transaction performed to specification, we wrote a test program for every operation!
As for performance...before we made the changes, our complete test took 70 seconds to run. Now we have nearly doubled the number of tests and it runs in under 15 seconds!
Multiprocessing That’s tech-speak
for doing two things at once. Modern computers have the ability to do many things at once
because they have multiple “cores” and we try to keep all the cores busy. But sometimes you
can’t do two things at once. For example, a truck can’t deliver to Chicago and New York at the
very same time. It can however deliver to Chicago and then move on to New York.
The same limitation applied to PlantX transactions. To guarantee integrity we could only process one at a time because of database limitations. But with the upgraded database, and some added engineering on our part, PlantX can now handle most transactions simultaneously!
As for performance...the numbers speak for themselves. We run all 166 test units, each with an average of 4 tests, that trigger over 3,500 transactions that all complete in under 9 seconds!
Data Integrity One of the marked improvements of the database is the data integrity. Integrity means that the database won’t let you delete products if they’re used by order items, or you can’t add a supply without a valid crop. Previously, we had to manually program each step to preserve integrity. It meant for every change request, we had to read copious amounts data to make sure the change was permitted and accurate. Now, the upgraded database enforces the integrity, and because it holds all the data, the check is immediate. This makes all operations much faster and the data is kept in check.
No Hesitations When the Internet was
slower, your computer couldn’t afford to make extra trips back and forth to the server. So
each call to the server was optimized by hesitating slightly to see if any more data was ready
for pickup. This is the city bus analogy; the bus doesn’t take off to the next stop just
because one passenger boards. It hesitates to allow more passengers, or in this case more data
to get on board.
But today’s Internet is much quicker and the server is much faster at gathering data for the bus. So we took out the hesitation! The hesitation was only 1/20th of a second, but eliminating the delay had a significant impact on other processes. For example, when we run 500 tests back to back, 1/20th of a second adds up to 25 seconds of wasted time.
As for performance...if you do something simple, for example clicking to toggle a supply listed, it will be immediate. Now of course the responsiveness still depends on the speed of your Internet, but the transaction itself no longer hesitates.
Can you hear me now? This PlantX upgrade includes a new feature that attempts to reconnect to the service if there is an interruption between you and the service. PlantX will effectively redial and take up where it left off. No more PlantX closures when your Internet connection hiccups!
PlantX started back in 2001, the days when we accessed the Internet with modems and DSL (a faster modem). Back then, a connection meant you were connected as long as the modem was running. Today we have cable, fiber and wireless connections which are magnitudes faster but they've become unreliable, and in some cases hostile. Some Internet providers deliberately kill connections! They expect their customers to only browse the web and stream videos. Any uses outside of that for business, disconnects are commonplace.
This upgrade adapts to these new conditions by temporarily suspending operation while it reconnects to the server. Previously, if the connection was interrupted, PlantX closed and you had to restart. Now PlantX will detect interruptions and wait to recover the connection. It waits up to two minutes before closing. While interrupted, or even completely disconnected, you will see a new connection message shown here.
While the connection message displays, PlantX runs some simple diagnostics to help give you (and us) clues to how your computer's connection is performing. It tests the local computer and then well known sites on the Internet, then our network, and finally the PlantX service. If any tests return with a red X, it can reveal why the connection is down.
Give it a try! If you dare...
If you want to see this new feature in action, start PlantX and then unplug your computer from the Internet! I don't really recommend that you do it, but it does work. This is exactly how we test this feature! Just remember to plug back in before two minutes.
A note for those that use Broker Servers.
If your office has a Broker Server installed, and the Broker's Internet connection is interrupted, you will get a similar window showing the broker is disconnected. It doesn't show detailed diagnostics, but it does let you know that service to the Broker is interrupted. You may want to check your Internet connection, and if you see these often, let us know.
Better Connex sign-in We've created an upgrade for the Connex program that does a better job of activating the sign-in button when you press enter. We will be releasing this upgrade to some beta testers and then to everyone next week.
Bug fix Some of the button icons were not showing in the Label Designer.
Tech Upgrade: Cool Cache for
everyone! For those in the know, cache is a French word for a secure place of storage.
In computer speak it means storing recently used data on disk so it can be recalled later,
which speeds things up tremendously. PlantX has always used disk caching to store products,
orders, supplies, etc., to reload them much quicker from one run to the next!
There was one caveat though, the disk cache could only be accessed by the first running instance of the Grower application. If you ran any additional copies of PlantX they couldn't access the cache and would run much slower. We observed over the last year that many users were running a second or third copy of PlantX, which means their experience on PlantX was mixed. This version of PlantX now has a cache that can be shared between any number of running applications. So no matter how many copies of PlantX you run on your computer, they all run equally quick.
A footnote on broker servers... if your office has a broker server, it does all of the caching, so there was no performance hit running additional copies. The broker server is first and foremost a caching server for the entire office, but it caches larger sets of information, like entire lists of crops, inventory, or orders, not just individual objects. Brokers do just what their name implies, they broker information so only one copy needs to be retrieved from the main server for the entire office. We typically recommend a broker sever when there are eight or more users in the office.
Complete rewrite of the Label Designer Most of the impact is on how the Layouts and Designs are stored in the system. The changes had such a broad impact it lead to many changes to the visual design tool too, where many improvements were made.
No more floating edit window Previously, when you went to edit a field on the design window, it opened a properties window where you could change the content of the field, position, fonts, etc. The properties view is now anchored to the bottom of the design window. This makes it much easier to use.
Three separate field types When you added a field, it was a one-size-fits-all approach and it was difficult to operate. Now when you add a field, you simply hit the add button for the type of field you would like to add; text, barcode, or image. Also, if you select an existing field first, it will add the new field just below your selection.
Better field name selector Previously, you were given a list of fields that you had to drag-n-drop into the text field. Now there is a pop-up menu that organizes the field names by their type. To insert a field name, position your cursor where you want to insert the name, click the pop-up option menu (to the right) and select the field you want to insert.
Move toward a standard field names The names for the text fields now follow the reporting convention, for example [orderitem.upc]. It continues to support the older names, but we will eventually convert all templates to use the new names.
Save and Save As buttons If you wanted to use a stock layout or design, you had to copy it to your own custom design first, then edit your custom design. Likewise, if you started to edit your custom design but decided that you wanted to save it under a different name, you couldn't. Now there are two buttons, Save and Save As. Press the Save button and it will save your work. The Save As button will produce a new copy. If you edit a stock template and press the Save button, it will prompt you to save it as a custom layout or design.
Custom and Stock templates kept separate Previously, your custom layouts and designs were shown in the same list. This made it difficult to distinguish the two. They are now shown and managed in two separate lists.
Improved security This upgrade moves us closer to isolating core parts of PlantX responsible for providing security into a separate “services” layer. Not only does this make it easier to manage the PlantX programming by having one central clearing-house for security, it also “minimizes the attack surface”. This effectively means we have one go-to place to validate user and member permissions, and since this is done in only one place it can be walled off to ward off attackers. Our servers block hundreds, and even thousands of attacks daily, and this upgrade helps us keep the critical authentication services in a harder to reach location.
Maintenance tools As we make changes to the system over time, it often requires making changes to the database too. This upgrade includes to new tools we've built to help in the upgrade process. It ensures the database matches the PlantX program's expectations and it corrects any differences it may discover. This maintenance tool will be critical as the number of members and the amount of data created grows.
Improved report storage We recently passed the 450,000 mark for saved reports! Needless to say the current means of storage was getting unmanageable. This new release uses a new form of file storage that better organizes the saved reports. This leads to easier monthly disk maintenance and faster nightly backups.
Barcode scaling option. When
creating labels with barcodes there is a new option to allow scaling of the barcode. Activate
the option on the barcode design field and the barcode will scale to fit the chosen are on the
NOTE: This is still an experimental option and we discourage using the feature unless you have the means of testing and verifying the quality of the resulting barcodes. The normal, non-scaled barcodes are designed in a "pixel perfect" manner that should work with most printers. But should you need a slightly smaller barcode footprint, the scaling feature can be used to reduce the size. You must fully test the quality of the barcodes on the actual printed labels. This is because scaling the bars, and blanks in between the bars, can introduce subtleties that can reduce the quality of the barcode read. It can cause reading performance issues or even completely unreadable codes.
Fixed printing of rotated barcodes. Positioning of barcodes on the label was incorrect if the barcode was rotated. This release corrects the problem.
Fixed Sales Rep Edition not loading Orders Window consistently.The Orders Window was not consistently loading the initial orders list unless you did some sort of search or other filter selections. This issue has been corrected and the initial set of orders show correctly.
Technical changes to the Gallery and Slide Shows storage. Largely done for standards and performance reasons, it does make it easier to change the order of the pictures in a list. No more sequence numbers, just use the sort button to change the desired order of appearance! The server software was changed to store the Slide Show information differently. All Slide Show data is retrieved in a single server request making for faster website operations This brings the Gallery and Slide Shows up to new standards.
Added Pallet % to the Product settings. Along with Load Factor and Weight, there's a new Pallet % field that you can use to plan pallets.
Upgraded pricing storage. The pricing block attached to each product in the catalog was stored in a custom field. It now uses a standard format which gives us more flexibility to use modern database tools and generally better performance.
Overhaul of Order Periods and Order
Types. Rather than being formal Order Types and Periods, they have been converted much
simpler, more generic order /grouping/ fields called Grouping 1 and Grouping 2. You can name
the grouping fields anything you like and use them any way you see fit. You are also free to
enter any value into the field on the order. You can still quickly choose from preset options
to speed up data entry, but you can also enter any other text.
We converted your existing non-hidden types and periods to the Grouping1 and Grouping2, respectively.
Previously, Order Types and Order Periods were maintained by using Action > Maintain > Order Types or Order Periods. Now they are changed through the Action > Maintain > Member Settings on the Order Groups tab. From there you can change the labels to anything you like as you can decide how you want to organize your orders into groups. You can then modify the list of preset options. These are the options you're presented with to speed up entry.
The materials load up to 75% faster. The Material Window certainly loads much quicker, but since materials are also loaded for nearly all other operations, it will have a broader impact on PlantX performance.
An improved Material Facts edit window. The performance improvements included rebuilding related information, like the Material Facts, it required a rewrite of the editor, Action > Maintain > Materials Facts.
Cleaner, simplified handling of Material Facts. This upgrade includes a redesign of the material facts, which eliminates three database tables and the need to retrieve data from three sources. This means much fewer tiny bits of information are loaded on every operation. Less busy work means faster responses for users or customers browsing the website. This is the last of four upgrades that were required to make this change.
Database table upgrades. For broader compatibility, we upgraded some of the tables to a more universal character set to support odd characters that could be included in material facts.
Improved tracking of website transactions. We track various statistics during web operations and this upgrade gives us more details on web activity. For example, before we install an upgrade at night, we like to be certain no customers are shopping (because they do shop at midnight!) and this tool tells us the website is idle.
Better control over caching of data. This is a new tool we can use to manage how much information is cached during daily operations.