Right now it’s packaging season (not the official term!) at my university–a time of year when IT staff have to battle with silent installers, SCCM, MSI creation and Adminstudio in order to create the student desktop image for the next academic year. Packaging season makes me grouchy, it makes me work late and it makes me massively over-react to every minor installation issue caused by software vendors. Right now, however, I am not grouchy because of packaging season..I am grouchy because of concurrent network licensing (or floating licensing if you are Wikipedia).
I like network licenses…they make many aspects of my job easier but they the way they are implemented by some software vendors causes them to be a pain. Over the years, I’ve bothered many a support-desk with my network license tails of woe and thought that I would collate them all together in one blog post.
The more of these things your software does, the more pain you cause me and my colleagues.
1. You don’t use standard FlexLM/FlexNet.
Like it or loathe it, FlexLM is used by the vast majority of software vendors out there. We run license servers that host dozens of FlexLM based applications and we have got the administration of these down to a fine art. In fact, we’ve replaced the vast majority of the process with a script. If an application uses FlexLM, system administration and license monitoring is bordering on the trivial for us now. The further you stray away from FlexLM, the more difficult our job becomes.
One thing guaranteed to ruin my day is a call from a vendor I’ve worked with for years who says ‘Great news Mike, we’re ditching FlexLM for our own, in house license system.’ Fabulous! Rather than use our lovely, generic, one-size fits all scripts, we are going to have to do a load of extra work and testing just for you. I look forward to all the new and interesting bugs your system will generate.
2. You don’t support redundant license servers.
The idea behind redundant license servers is this: Instead of your application relying on just one machine, it relies on three; only two of which have to be operational at any one time. This gives us resiliency and resiliency is a good thing when you are teaching a lab with 120 students in it.
I’ll keep this simple. If you don’t support redundant license servers, it means that you don’t believe that your software is important. It tells me that you are just playing at being a big, grown up piece of software but you don’t really think anyone will take you seriously.
3. You support redundant license servers but can’t select them via the installer.
At install time, there is no option to give three severs. The user can only give one. You then expect the user to copy a pre-prepared license file that has details of all three servers as a post-installation step.
What usually happens here is that users give the primary license server, find that the application will launch and stop reading the installation instructions. At some point in the future, we take down the primary license server for maintenance and the vast majority of self-serve installations break!
4. You use the LM_LICENSE_FILE environment variable
The problem is, so does everyone else. We end up with a situation where the LM_LICENSE_FILE variable is pointing at several license servers and some client applications really don’t like that. Be a good FlexLM citizen and use a vendor specific environment variable. For example, MATLAB uses MLM_LICENSE_FILE and I could give them a big hug just for that!
5. You ‘helpfully’ tell the user when the license is about to expire.
I’ve moaned about this before. 1000 users panicking and emailing the helpdesk…lovely! Bonus points are awarded if you don’t allow any supported way of switching these warnings off.
6. Your new license doesn’t support old clients.
This should speak for itself and happens more than I’d like. We can’t upgrade the entire estate instantaneously and even if we could, we probably wouldn’t want to. Some users, for one reason or another, cling to old versions of your software like grim death. They don’t care that there is a new shiny version available, all they know is that I broke their application and they hate me for it.
When we discover that old versions of your application will stop working, it also delays roll out of the new version since we have to do a lot of user-communications and ensure that nothing mission-critical will stop working. This makes power-users of your application hate me because they want the new shiny version.
7. You don’t have a silent installer.
Strictly speaking not a network license moan but closely related. We use network licensing because we deploy your software to lots of machines. When I say ‘lots’ I mean thousands. It turns out, however, that you don’t support scripted installation (sometimes called ‘silent installation’ or ‘unattended installation’). This means that your software is a lot more difficult to deploy than your competitor! I’m now a big fan of your competitor!
8. You have a silent installer but it’s a bad one.
If I install manually, via point and click, I can configure every aspect of your application. Your silent installer, on the other hand, is just a /S switch that does a default install…no configuration possible. Bonus points for ‘silent’ installers that include pop-up dialogue boxes that can’t be switched off.
While on the topic of silent installation, can I just ask that you directly support deployment by SCCM on Windows please? It will help with next year’s packaging season big time!
I work for a very large UK University and am part of a team who is responsible for the network licenses of dozens of software applications serving thousands of clients. Many of these licenses need to be replaced annually. From a technical point of view this is usually fairly trivial but there are various management and administrative considerations that need to be made to ensure that user-side disruption is kept as low as possible.
Each software vendor has its own process for managing the license renewal process..some of them do it very well and some of them seem to work to make our life as difficult as possible but there is one problem that is shared by many software applications.
In a misguided attempt to be helpful to the user, many network licensed applications will display a launch-time message if the network license is set to expire ‘soon’ (where ‘soon’ might be as much as 90 days in the future’) . The user sees something like
‘Your license for this software will expire in X days. Please contact your administrator for more information’
Can you guess what happens when several hundred users see that message? Yep, we get snowed under in panic queries for a ‘problem’ that does not exist. The license upgrade is scheduled and will happen behind the scenes without the user ever needing to know anything about it.
So..to all software vendors whose applications do this for network licenses….PLEASE SHUT UP!
I work for The University of Manchester where, among other things, I assist in the support of various high performance and high throughput computing systems. Exchanges such as the following are, sadly, becoming all too commonplace
Researcher: “Hi, I have an embarrassingly parallel research problem that needs a lot of compute resource. Can you help?”
Support: “Almost certainly, you could have access to our 2500 core Condor pool or maybe our 2000 core HPC system or any number of smaller systems depending on the department you are in. Let’s meet to discuss your requirements in more detail”
Researcher: “Sounds great. I am using [insert expensive commercial package here], could we install that on your systems?”
Support: “Not unless you pay a HUGE amount of money because you’ll need dozens or maybe hundreds of licenses. The licenses will cost more than our machines! Could you use [insert open source equivalent here] instead?”
Researcher: “A member of your team suggested that about 2 years ago but [insert expensive commercial package here] is easier to use, looks pretty and a single license didn’t seem all that expensive. It’ll take me ages to convert to [insert open source equivalent here]. Instead of splitting the job up and spreading it around lots of machines, can’t I just run it on a faster machine?”
Support: “Sorry but parallelism is the only real game in town when it comes to making stuff faster these days. I’m afraid that you’ll have to convert to [insert open source equivalent here], open your chequebook or wait until 2076 for your results to complete on your workstation.”
The moral of the story is that if you want your compute to scale, you need to ensure that your licensing scales too.
I needed to install Labview 2010 onto a Ubuntu Linux machine but when I inserted the DVD nothing happened. So, I tried to manually mount it from the command line in the usual way but it didn’t work. It turns out that the DVD isn’t formatted as iso9660 but as hfsplus. The following incantations worked for me
sudo mount -t hfsplus /dev/sr0 /media/cdrom0 -o loop sudo /media/cdrom0/Linux/labview/INSTALL
The installer soon became upset and gave the following error message
/media/cdrom0/Linux/labview/bin/rpmq: error while loading shared libraries: libbz2.so.1: cannot open shared object file: No such file or directory
This was fixed with (original source here)
cd /usr/lib32 sudo ln -s libbz2.so.1.0 libbz2.so.1 sudo ldconfig
Open Office is good but it’s not great and several months ago a few people came to the conclusion that a relatively little known product called Softmaker Office was quite a bit better. This may upset some of you because Softmaker isn’t free software; it’s proprietary – but it is cheap! In particular, educational site licenses are ridiculously cheap. For $99 dollars you can buy a site license that will allow you to install it on any Windows machine in your school or university. For another $99 you can have it on every Linux machine! Unfortunately, there is no love for Mac users at the moment though.
So it’s cheap but is it any good? Well, why not find out? Between now and 31st December 2009, Softmaker are offering their entire office suite (word processor, spreadsheet and presentation) for free on both the Windows and Linux platforms. I’ve downloaded it and will be having a play with it over the festive period and I invite you to as well. I’d be very intersted to hear your thoughts on it.
MATLAB is an incredibly powerful piece of software that is used by students and researchers in a wide variety of disciplines. If you have some maths to do then MATLAB can probably help you out – curve fitting, statistics, plotting, signal processing, optimization, linear algebra, symbolic calculus – the list just goes on and on. There is one big problem though – much of this stuff doesn’t actually come with the basic install of MATLAB.
Let’s say that you are a new academic researcher and you have just purchased a copy of MATLAB at a cost of several hundred pounds. At first it seems that it can do everything that you require and so you are happy. One day though, you find yourself needing to find the minimum of a constrained nonlinear multivariable function. After a bit of searching you realise that the function you need is called fmincon but, when you try to use it, you discover that it is part of an add-on called the Optimization Toolbox which costs a couple of hundred pounds. You duly pay for the toolbox and are happy once again.
Some time later in your career you find yourself in need of a good quasi random number generator to help you implement a monte-carlo integration scheme. MATLAB can help you out in the form of the sobolset and haltonset functions but you have to pay yet more money to get access to the Statistics Toolbox.
MATLAB has a toolbox for almost every eventuality:
- You need to symbolically integrate a function. – buy the Symbolic Toolbox
- You need to do some advanced curve fitting. – buy the Curve Fitting Toolbox
- Working with Splines? – buy the Spline Toolbox
- Financial Mathematics?- buy the Financial Toolbox
You get the idea. I guess Mathworks do this for a good reason – by splitting off these more specialised functions into separate products they can keep the price of the basic version of MATLAB down at a reasonable level. This is a good thing for many users. After all, who wants to pay for a lot of functionality they will never use.
There are problems with this model though. If you are unlucky enough to have a problem that requires several of these specialised functions then MATLAB can be a very expensive solution for you. If happen to be the head of a research group with, say 20 members, and all of them require access to several of these specialised toolboxes then MATLAB can be an extremely expensive option for you.
Finally, if you are someone like me and you need to maintain network licenses for over 50 different MATLAB toolboxes with varying numbers of seats for an entire large university and co-ordinate who pays for what and give recommendations on which toolboxes academics might choose for teaching and research then the whole MATLAB toolbox system can become rather well….tiring. The license related issues alone are enough to give you sleepless nights – trust me on this!
NAG – A new kind of toolbox for MATLAB
Wouldn’t it be nice if there was a MATLAB toolbox that did the work of several other toolboxes which also had an amazingly straightforward licensing system? Well, the Numerical Algorithms Group (NAG) have come up with a contender for such a toolbox – The NAG toolbox for MATLAB.
NAG have got history – they have been around for a long time. They published the first version of their numerical libraries (which they refer to as Mark 1) back in 1971 so they are even older than I am. Mark 1 of the NAG libraries contained 98 different functions and could be had in 2 flavors – ANSI Fortran or Algol 60! Fast forward to 2008 and they are up to Mark 21 of their Fortran library that contains around 1,500 different functions, which is a lot by anyone’s measure. Subjects covered by these functions include optimization, statistics, splines, curve fitting, numerical quadrature, differential equations and a whole lot more. The recent release of the NAG toolbox for MATLAB allows you to call most of these functions directly from MATLAB – not a whiff of Fortran anywhere.
Did you notice anything about the subjects covered by the NAG library in the paragraph above? That’s right – they look just like the names of various MATLAB toolboxes. A very quick survey of the NAG functions on offer suggests to me that you might be able to substitute the NAG toolbox for MATLAB for the following standard MATLAB toolboxes:
- Statistics toolbox
- Optimization toolbox
- Curve fitting toolbox
- Spline toolbox
- Partial Differential Equation toolbox
That’s at least 5 toolboxes in one – which is great news and it gets better. If your institution has a site license for the NAG Fortran library then, at the time of writing at least, it will also have a site license for the NAG toolbox for MATLAB. That’s a genuine site license as well – one that you could use to install the toolbox on every machine owned by your institution. No mucking around with concurrent network licenses here – which is one major point in it’s favour from my point of view.
As you might expect, however, there are complications. The NAG toolbox may well offer similar functionality to the MATLAB toolboxes listed above but you cannot use it as a simple drop in replacement for them. For example, if you want to create quasi random numbers using the sobol sequence then the function you would use from the MATLB statistics toolbox is sobolset whereas if you use the NAG toolbox then the function you need is called G05YAF. The exact properties of these two functions may differ as well since they have probably been implemented differently and the two companies have rather different ways of doing things.
While on the subject of function naming – I have to say that I simply don’t like the naming convention used by the NAG toolbox for MATLAB (which is identical to what they use for their Fortran library). Let’s take the function mentioned above as an example – G05YAF. It’s hardly memorable is it? The MATLAB equivalent – sobolset – is much more reasonable in my opinion. Of course your mileage may vary but I have been brought up on systems such as Mathematica, MATLAB and, more recently, Python and in all of these systems the naming conventions used are almost obvious. Let’s take the function for calculating the eigenvalues of a real general matrix as another example:
- Mathematica: Eigenvalues
- Matlab: eig()
- NAG toolbox: F02EBF()
Of course the NAG naming convention isn’t completely random even though it may look like it at first sight of the function names above. It’s very well organised in fact and you can quickly get used to it once you understand the system but it definitely looks out of place when put up against its competitors in my opinion.
Although I keep comparing the NAG product with those of the Mathworks, it’s probably worth mentioning that NAG have not set out to build a product that directly competes with the MATLAB toolboxes. They are very different beasts and so if you are looking for a one to one correspondence between the NAG toolbox and MATLAB then you are going to be disappointed. NAG were around long before the Mathworks and they have their own particular way of doing things. I’m not saying that one approach is better than another but they are certainly different.
As a particular example of what I mean consider finding the eigenvalues of a matrix again. The approach taken by the Mathworks is to provide you with one function in MATLAB – eig(). The algorithm that MATLAB uses to actually find the eigenvalues depends upon the type of matrix you give it. The system takes a look at your matrix at run-time and does its best to come up with the optimum algorithm to find the solution.
NAG take a rather different approach. They provide lots of individual functions (click here to see them) that can find eigenvalues for various matrix types and they expect the user to choose the most appropriate one.
These differences can make a direct comparison between NAG and MATLAB rather difficult – if it were easy I would have done it by now. In my opinion you should not be thinking “What is the NAG equivalent to the MATLAB function xyz” as there might not be a direct equivalent, instead you should be thinking “I need a function that does abc – which routine in the NAG toolbox might help me?”
If you find that you need to do something that is not contained within the NAG toolbox then you have essentially have three options.
- Try to find something in the Mathwork’s set of toolboxes that does what you need and use that instead.
- Code the algorithm yourself – or find someone else’s solution on the web.
- Email NAG and tell them what you want to do.
I have taken option 3 on behalf of myself and several users at my university and am very pleased to say that NAG have always responded. In some cases they told us exactly which function within the NAG toolbox we needed to use and in other cases they have actually implemented a suitable algorithm for us
There will be several functions in the next release of the NAG library (and hence the NAG toolbox for MATLAB) simply because we asked for them. That’s what I call customer service! Of course I can’t promise that they will do this in all cases but I have personally found them to be very approachable.
I might not like NAG’s naming convention but I seriously like the quality of their routines. If you came to me with two solutions to a problem – one which came from the NAG libraries and one which came from some other source then I would almost always trust the NAG result. Writing numerical code is pretty much the main focus of their business and they have been doing it for over 30 years so they know their onions (as my Australian friend Barrie would say). Take a quick look at the scientific literature on google scholar and you will find thousands of references to the NAG libraries – if thousands of academic feel that they can trust them then so can you.
Another high quality part of the NAG toolbox for MATLAB is the documentation. Every single function has been meticulously documented and contains details of the algorithms involved, references to the original literature and fully working example programs. It integrates well with MATLAB’s standard documentation system and so appears to the user as if it were any other MATLAB toolbox. The only thing that is missing is a set of demo’s that can be run directly from the help system. Every standard Mathwork’s toolbox has a nice set of illustrative demo applications that you can start running with just a few mouse clicks but the NAG toolbox has none. This is a shame isn’t exactly a show-stopper and I am reliably informed that there will be a whole set of demo’s included in the next version.
- Truly massive set of robust, accurate numerical routines that could potentially negate the need for a whole set of Mathwork’s tooboxes (write me for more details)
- Superb documentation and first class customer support.
- Easy license administration for academic institutions.
- Esoteric naming convention.
- I couldn’t find a price for an individual who wants to buy the toolbox. NAG’s license model seems to be geared more towards site licenses.
The NAG toolbox for MATLAB is a great piece of software that deserves to be in the toolkit of everyone who is in the business of writing numerical code.
Full disclosure and the usual disclaimers
- I work for the University of Manchester in the UK but these are my opinions alone and do not necessarily reflect the policy of the University.
- NAG once bought me lunch but so have the Mathworks so it all evens out nicely.
- I have never been paid by either company to do anything – I’m just a customer.
- Comments are welcomed. Even if you disagree with me.
Other articles like this one:
- How to call the NAG Libraries from Excel using VBA
- What’s new in Mathematica 6.0.3
- Interacting with SAGE – Part 1
If you enjoyed this article, feel free to click here to subscribe to my RSS Feed.
Part of my job is to look after Manchester University‘s site license for the NAG libraries. If you have never heard of the NAG (Numerical Algorithms Group) libraries before, and if your work involves any kind of numerical computation, then I highly recommend that you check them out as they are very good at what they do. One senior researcher at Manchester referred to them as ‘The gold standard of numerical computing.’ High praise indeed and praise that I completely agree with.
The NAG libraries are written in Fortran but you don’t have to be coding in Fortran in order to use them. With a bit of effort you can call them from many different programming environments such as Python, Visual Basic, C (in fact there are C-specific versions of the libraries) and MATLAB (via the NAG Toolbox for MATLAB).
A few months ago I had a visit from some very worried looking students who needed to call the NAG libraries from Excel using Visual Basic for Applications (VBA) and they had no idea where to start. Sure, NAG have some VBA examples on their website but they assume that the reader already knows a fair amount about both the NAG libraries and VBA – knowledge that these students simply didn’t have.
I took a look at what they wanted to do and said that if they came to meet me in a couple of days time then I would put together a simple piece of code that would push them in the right direction. The code would be well commented, I told them, and would cover all of the concepts that they would need in order to put together their application. They looked very grateful and relieved.
I didn’t have the heart to tell them that I had never written a single piece of VBA code in my life!
So, off I went, learning just enough VBA to work with the NAG libraries. The staff at NAG helped me out when I got stuck and, I’m happy to say, I had just what these students needed by the time of our next meeting. I’d like to stress that I didn’t do their work for them – not even close! They told me what NAG functions they wanted to use and all I did was code up example VBA scripts that called those functions for various sample problems. This was all the help I gave them as I felt that it fell within my remit of ‘supporting the NAG libraries at Manchester’ without crossing the line of actually doing their work for them.
I looked at the pile of hand written notes that had been made while I was learning VBA and thought that they could do with being typed up. After all, I would probably have forgotten most of it by the time I was next visited by some students.
To cut a long story short, these notes ended up becoming a technical report that was published on NAG’s website today. So, if you find yourself needing to call the NAG libraries from within Excel 2003 then you might find them useful. As always, feedback is welcomed.
Thanks to all of the Staff at NAG who helped me clean up the mess that was the first draft – I have really enjoyed working with you all and hope to do so again soon.
If you enjoyed this article, feel free to click here to subscribe to my RSS Feed.
Update (3rd March 2009): The article referred to in this article has been updated – click here for details.
I’ve not really done this before out of fear of the possibility that no one would reply but I’m going to do it anyway and ask my readers a question or two.
If money were no object – what Maths software would you use? Why? Are there any commercial maths applications that you wouldn’t use – even if they were free?
Update (20th August 2008):Some people have questioned my motivation for asking this question so I guess it’s only fair that I lay all of my cards on the table. I do not work for any software company but I do work for a University that has site licenses for almost all of the applications I mentioned above. Furthermore I am the campus representative for many of these site licenses so I am responsible for getting them from the supplier to our users and I am sometimes involved in site license negotiations.
Back when I was a PhD student of physics (at a different university) I sat on the other side of the fence and was a user of Mathematica, MATLAB, the NAG libraries, Fortran, C++ and, occasionally, Mathcad. All of them have strengths and weaknesses but, of course, my point of view was limited only to what was useful to me at the time. I have strong opinions in some areas (I love Mathematica, I hate Mathcad and I respect MATALB for instance) that have been shaped by my own experiences but I like to have my opinions challenged whenever possible.
So, the reason for my question is simply professional and personal interest. The only agenda I have is to learn more and seek people’s opinions. I am not selling anything and I do not aim to promote any particular company. People who disagree with me are especially welcomed to comment.
The makers of the big mathematical applications usually have some repository of user-generated code, documentation, examples etc. For example Wolfram Research have the Wolfram Demonstrations Project and the Wolfram Library Archive whereas Mathworks have MATALB Central. I really like these sites and often find myself browsing through them when I need help or inspiration.
Maple is a package that is starting to appear on my radar more and more and it turns out that they have an equivalent code repository called the Maple Application Center. According to the site it has over 1500 Maple applications, tutorials and so on which sounds fantastic. The only problem is that I have to register before I can download anything from it. So I haven’t downloaded anything from it.
Registration is free so you may wonder why I don’t just do it. To be honest, if Maple becomes a bigger part of my life then I probably will but, right now, when I am still at the ‘messing around’ stage of interacting with Maple I just can’t be bothered with registering yet another online account. I have almost a hundred online accounts for various things and I really don’t want to create more if I don’t have to.
So Maplesoft, if you are reading this, why do you insist on me creating an account to access this very nice repository of information? Logging in is, in my opinion, an unnecessary step between the user and the good stuff. Wolfram doesn’t do it and neither does Mathworks so why do you?
Update 26th October 2009: It is no longer necessary to register. Thanks to ‘C’ for letting me know.
If you are a user of MATLAB’s Symbolic Toolbox then you are a user of the Maple 10 kernel since this is what MATLAB uses ‘under the hood’ in order to perform symbolic calculations. As of Septemeber 28th 2008 the Mathworks will be switching the kernel of the Symbolic Toolbox from Maple to Mupad. So should you care?
The answer is almost certainly yes. Mupad is completely different from Maple with a different set of abilities, behaviours and, inevitably, bugs. For example, things that didn’t work in Maple versions of the symbolic toolbox will start to work in the Mupad version. On the flip side, some things may stop working where there was once no problem.
I have been through this before when Mathcad switched from the Maple kernel to Mupad and there were a few issues but I support a much larger number of MATLAB symbolic toolbox users and so I am fearing the worst, but then I always do when something major changes like this.
An example of the kind of issue I came across when dealing with the Mathcad change included things like equation solvers changing their behavior due to using different algorithms internally. This sort of thing cropped up in problems that had multiple solutions such as when you try to find the roots of certain equations. Lecturers notes suddenly started disagreeing with the output because, for a given starting value, Mathcad converged to a different solution. No big deal in a class situation (in fact it might be a good learning experience) but not good if you have legacy code that depends upon that result.
Other bugs were a lot more embarrassing.
I’ll be honest – I do not know enough about either Maple or Mupad (I don’t even have access to Mupad in fact) to be able to decide if this change is going to be a good thing or not but one thing is for certain – it will be different and that will need to be managed.
The practical upshot is – when you upgrade, you should check all scripts that depend on the symbolic toolbox