Tuesday, 30 August 2011

Squeezing the last bit of performance

Today was remarkably quiet so I thought I would have just one more look at a piece of code that has been irritating me for a while.

One of my earliest posts notes how I managed to tweak the performance so that Manager loads quickly. So much so, we used the function in EISNet v1.6.1 which was being installed over the Summer holidays.

The function I reviewed again today is the same function. 

The origins if this function is a mystery to me but I do know it's one that has existed in EISNet since the beginning of time and it possibly the most fundamental procedure in the entire product - yet it's also the weakest. This procedure is referenced constantly throughout the entire source code at all levels. It's even shared among the other applications in the EISNet tools set. It's slow, clunky and quite frankly poorly written. 

Although my previous change to the function had improved the performance, I still was not happy with it. It's not smart code - and I like all code to be 'smart'.

So I took the opportunity to have a quick go rewriting it just to see what would happen. I wasn't disappointed.

The end result is another 500ms off the Manager start up time. Manager now loads in 1.5 seconds on a typical Primary School system. Not bad when you consider Manager v1.5 would take 5 or 6 seconds.

I don't think we will be able to squeeze anything else, performance-wise out of Manager's start up time.

Friday, 26 August 2011

Package Deployment

The package deployment overhaul is ending up being a much bigger job than I had anticipated. It has been worth it though so far.

Packages can now be uninstalled from a workstation successfully and then reinstalled, they no longer get lost in the ether.

Previously, the deployment used multiple SQL queries to handle something as simple as determining the list of packages available for install. Now, where possible, this has been condensed to just one query (including one with three joins).

Hopefully these changes will improvement the performance.

Kevin found one more bug for me so hopefully that will be the last of the package deployment overhaul.

Progress Update

Today is the last day of continued development over the school holidays. Development will continue once the "back to school" rush eases.

Of the 50 or so bugs found on our testing day, only 2 remain. These are both profile based which is due to be completely redone anyway.

Archivist is no more! The archivist module will now be made redundant as this has been moved into the main Manager Application. It's work in progress, but the fundamentals are complete.

We done a series of successful performance tweaks around packages, and also group management. Michael is working hard on the SQL side of the package deployment to fine tune and finalize that area.

We've have added a number of tools into Manager for clients. You now have the ability to RDP, Check Disk and Defrag. You can also view the Windows Event log on the remote device. We have finally put in an option to restart the EISNet client remotely as well.

Most of this week has been bug fixing, so few changes have been made to the interface, so no updated screenshot today. However, with the moving of Archivist and hopefully Applications into Manager, i'll provide some screen shots after the mad rush of September.

Thursday, 18 August 2011

Testing Day 1

As part of the development progress, we do a large amount of testing. So far, we have found over 50 bugs of different severity.  Some highlight the need to completely re-write particular elements while others were quick fixes done immediately. All software has bugs but the important thing is find them before the end-users do.

Today Matt, Alex and Michael were trying hard to break Manager in any way they can.


Wednesday, 17 August 2011

Progress report



Import Engine

The point of focus over the past week has been the user import engine. I have already posted, this is a complete re-write of the function and to say it was not easy is a massive understatement. The principle idea behind the new import wizard is to allow any CSV of any structure be imported. This means, it doesn't matter how many columns you import or which order they are in, they the required data is imported.

The interesting thing with the user import tool, is that it only needs four fields. First name, Last Name, Username and Password. Anything else is ignored. However, what this new engine allows you to do, is create the login name based on any other field. This means your login name can consist of the users year group, class, name and anything else you want to use. This makes a more dynamic and flexible importer than we previously had.

Help Window

At the same time, we have also been working hard on the help window. With the previous version of Manager, we had one treeview and one help panel. This meant there was a lot of wasted white space. The problem is that Manager is a naturally simple tool, so we were keen not to make it overly complicated for no reason. We therefore decided, we would include a welcome page which is actually live on the web. It means we can update it with information and this is available to you straight away.

The content is still being written, but it allows us to alert you to issues, or advise you of updates that may be available. It's a great communication tool.


Screenshot

I'm please to be able to finally give a sneak preview to the new look EISNet Manager application.

It's a pre-release version so things may change. You will also notice some icons are missing or simply don't look right. This is constantly being improved and the minor aspects of the interface change every day.

Click here it for a larger version

Do let us know what you think.

Sunday, 14 August 2011

The drop over the top upgrade

Much to the annoyance of my colleagues, I have been determined to make v1.7 a 'drop over the top' upgrade. The basic idea is that if you have EISNet v1.6, you can simply drop 1.7 over the top and it'll work. We've come close to aborting this idea several times, but I continue to insist this is the way to go.

Naturally, some changes we have made require some back-end modifications, but to keep with my promise of a 'drop over the top' upgrade we had to come up with a mechanism for subtle changes.

The answer is remarkably simple and was easy to implement.

Manager v1.7 how has an upgrade engine which will modify any previous version (from v1.6 onwards) and bring it up to the latest version. It's fully automatic too. It gives EIS more flexibility when it comes to upgrades.

Not only will it upgrade from the last version, but if you are, for example, upgrading from v1.6 to v1.9, the upgrades will all run in succession ensuring no upgrades are missed.

Saturday, 13 August 2011

v1.7 progress update

Given this blog is new, and the actual development work on v1.7 is well under way, this first progress update does include everything we've changed so far. Further updates will be posted as we progress.

Interface

The interface has completely changed. It's now styled on the EIS standard for Windows software. In addition, the contents can be resized to suit your needs.

Site structure and objects

We have implemented a station/user list which sits next to the site structure. This is adaptable and can show both users and computers at the same time. This allows for a brand new search feature to be available on the main window. All this has been completed already. The search has an 'instant' feature which can be enabled and will perform live searching whilst you type.

On the subject of the user list, we have moved completely away from showing anything other than the users and computers structure in the treeview. Those items which have been made redundant are now in their own respective toolbar buttons.

Shared Folders

The entire Shared Folders feature has been completely renovated. You can now create, edit, rename and delete shared folders from directly within manager. Everything is handled backend so when you rename the folder, it updates the network as well.

Drive Mappings

Drive Mappings have been severely updated. Inheritance is now supported and the drives show its parent. Drives can be edited, changed and deleted and when created, you get the option of selecting a Shared Folder you have created in manager or you can enter your own UNC paths.

Printers

This is possibly the biggest update of the Manager tools. It has been completely re-written from ground up. Inheritance is now fully implemented. This means when you setup a printer, you can see where it is allocated to. In addition, Printers now supports Active Directory, which means you no longer have to know the UNC path of the device itself. Setting the default printer is now highly reliable and can be changed very easily. You no longer need to edit the configuration files manually.

Application Status

We have implemented a better Application Status dialog which gives you an overview of success or failures immediately. You no longer need to scroll through all stations to see if any have failed. Instead if a single device has failed to install a package, the room will show you an error has occured.

Online Help

The help system is moving to a online version which is always the latest version. It's integrated into the main form still, but can be resized as needed.

Alerts and Messages

All alerts and messages whilst you use the application are done in a collapsable alerts pane. For important or error type messages, a normal message box will be shown, but where success has occured it will tell you this in the alerts pane. The easiest way of describing this is to imagine the Windows event log, in Manager, but the messages only relate to the tasks you are doing.

Profiles management

The profiles management has been rewritten to now support roaming profiles. Users profiles can be changed quickly and easily to either mandatory or roaming.

Groups and Membership

The groups manager has been updated to allow creating, editing and deleting of groups. In addition, users and other groups (called group nesting) can be added and removed as required. This is all done on the fly with immediate effect.

Progress is underway to allow users to be added to groups in the users properties window. This part is not complete yet, but the fundamentals are there.

Importing Users

The import engine is also being re-written and is in development now. Currently you can import from CSV with any structure of your chosing. The Import Wizard allows you to assign the required fields to your data.  Once you decide on what to import, you can then decide how to make up the username and password for the user based on the information you import.

Not only that, but we are planning on implementing a feature to import directly from SIMS. The Import Wizard shows this as an option but will be disabled until it is written. This part is planned for v1.8.

Friday, 12 August 2011

Objectives for EISNet v1.7

I thought it would be useful to explain the basis and reasoning for the latest upgrade.

We decided EISNet v1 needed to be be updated given the time since the last refresh. While fundamentally the main objective is to give the GUI a refresh; naturally, we are developers at heart. So when we see an opportunity to improve the product, we'll take it. When you see it, you'll notice EISNet v1.7 is not so much a GUI update, but more of a complete over-haul.


There are multiple objectives for v1.7. These include;

  • Performance. Increase the performance of the entire product. Those of you who have had v1.6 installed during the summer (2011) may notice an improvement in speed when launching Manager. This is due to the core EISNet function being improved as part of v1.7. Such was the performance improvement, we had to put that update into the v1.6 code. To give you an example, starting manger on v1.5 would take on average 4-5 seconds. Sometimes more. With our new core function, Manager loads typically within 2 seconds.
  • SQL support. Although SQL is technically supported by EISNet v1.5 and above, it has not been implemented. v1.7 will be SQL by default
  • Network aware. Manager should be network aware and allow multiple simultaneous use.
  • Professional, modern and user friendly interface
  • Treeview and Listview for structure and objects. This means, no longer are users and computer shown in the main structure. Instead, we have a side-by-side list of users or computers depending on which intake (or room) you click on.
  • Integration of Applications and Archivist (and also Supervisor - although this will not be visible to the user) into the main Manager application.
  • New import users engine. Allow a more dynamic method of importing users, includling directly linking to SIMS.Net.
  • Online Help. The help system in EISNet is old and out of date. Integral to v1.7 is the introduction of web based help system. This means, the help system is up to date the moment we change it. In addition, the main Manager window how has a homepage which links to useful information, tips and important alerts about updates. Oh and this blog of course.

Introducing EISNet v1.7

EISNet is, as I'm sure you are aware, getting on a bit now. The original code was written around 10 years ago.  In 2005, EISNet was upgraded to introduce a new interface aimed at primary schools. This code has been the base for the entire EISNet product and is the software schools continue to enjoy using.
However, time passes quickly and we thought it was time for a complete over-haul of the Manager product.

In April 2011, the product started to get a significant face lift. Moving away from the primary school style to a more modern interface.

The development has not stopped. A lot of bugs and annoyances have been fixed and more importantly some sneaky new features have been implemented.

In addition, we are moving away from the three module approach (Manager, Applications, Archivist) into a unified single application which integrates all those features.

More significantly, EISNet Manager can now be used on multiple devices at the same time.

This blog is the only place to get up to date information about how the development progresses and the occasional screenshots.