IDL 8.8 was released recently. The main changes are:

• A new SOBOLSEQUENCE function to generate numbers from the Sobol sequence.
• Support for more video formats: DV (Linux only), RAW, Bitmap (Windows only), HEVC, VC-1, and VP-8.
• Fixed various bugs.
• IDL Workbench themes, e.g.., dark mode.

See the release notes for more details.

IDL 8.7.3 was released recently1. The new features are:

1. Using the Intel Math Kernel Library (MKL) for matrix operations now. My experience has been that MKL is a highly optimized implementation of BLAS, a library of low-level matrix and vector operations. Matrix operations, such as the # and ##, should be faster now, but I don't have 8.7.3 to test on, yet.
2. New BLASS_GEMM matrix multiplication routine with many options for controlling the operation. This is a consequence of adding the MKL.
3. New SOBOLSEQUENCE routine to generate numbers from the Sobel sequence.

UPDATE 2/25/2020: I have IDL 8.7.3 now and did some simple testing of the performance between IDL 8.7.3 and IDL 8.6 for # and ##. Mean time for multiplying two 50,000 by 50,000 element matrices went from 76.942 sec in IDL 8.6 down to 3.400 sec in IDL 8.7.3.

1. I have no idea exactly when or how to find that out. ?

IDL 8.7.2 was released sometime last year1. Check out the What's New for more details. The big feature is the WIDGET_BROWSER, which allows a browser window to be embedded in an IDL widget program.

1. I only know because I saw a webinar for the IDL 8.7.3 release, so it must have been awhile ago.

epochs is a Python package to handle configuration files specifying values which change over time.

For example, consider a configuration file epochs.cfg containing the following:

[2019-04-09 20:27:15]
value : 3

[2019-04-09 22:31:01]
value : 5


Then value can be retrieved for various times:

>>> import epochs
>>> ep = epochs.parse('epochs.cfg')
>>> value = ep.get('value', datetime='2019-04-09 21:55:45')
>>> print(value)
3
>>> value = ep.get('value', datetime='2019-04-09 23:15:40')
>>> print(value)
5


If you provide a specification for the values in a configuration file, epochs can also validate a config file and provide values as the correct type and default value. For example, for a specification file containing:

[city]
name : required=True, type=str
streets : required=True, type=List[str]
temp : required=False, type=float, default=0.0


Then an example configuration file following this specification:

[city]
name : Boulder streets : [Broadway, Baseline, Valmont]


Then to parse the configuration file with a specification:

>>> import epochs
>>> cf = epochs.parse('example.cfg', spec='spec.cfg')
>>> name = cf.get('name', section='city')
>>> print(name)
Boulder
>>> streets = cf.get('streets', section='city')
>>> print(steets)
>>> temp = cf.get('temp', section='city')
>>> print(temp, type(temp))
0.0


epochs is in PyPI. It can be installed with pip:

pip install epochs


The epochs source code is available on GitHub.

I updated my groceries list app, [Quantified Groceries], today. It's updated for recent phones and also now has a dark mode.

The release notes for 1.1.0:

- [NEW] iPhone XS/XR screen size support
- [NEW] Dark mode
- [NEW] Haptic feedback (requires iPhone 7 or later)

[Quantified Groceries]: https://michaelgalloy.com/quantified-groceries
[iOS App Store]: https://itunes.apple.com/us/app/quantified-groceries/id1099663281

IDL 8.7.1 adds the IDL Package Manager (IPM), a package manager for IDL libraries. You can install libraries from the Internet with a single command in IDL, even installing dependencies for the library if needed.

IDL 8.7.1 was released today. Check the What's New on the Docs Center for a comprehensive list of the new features.

Along with some performance improvements and library updates, there are two big new features:

• an IDL package manager
• machine learning classes (including a feed forward neural network class)

I will publish an article about the package manager shortly; I made IDLdoc, mgunit, and my personal library available through the package manager. I think this is now the best way to distribute IDL packages.

I am also excited to explore the machine learning classes. I will write more as soon we get 8.7.1 installed on our machines.

With these two new features, this is a powerful "bug fix" release.

When working with data files at my day job, I often come across directories containing a large number of files of several distinct types. It would be useful to produce a listing of the files clustered into these types. I wrote cls (Clustered ls) to find patterns in filenames for display.

Circular law states the eigenvalues of a matrix with random entries of mean 0 and variance 1/n are approximately uniformly distributed in the unit disk of the complex plane. To see this, create a random matrix:

n = 1000
x = randomu(seed, n, n) - 0.5
x *= sqrt(12.0 / n)


Find the eigenvalues:

eigenvalues = la_eigenproblem(x, eigenvectors=eigenvectors)


Plot them:

plot, real_part(eigenvalues), imaginary(eigenvalues), $psym=3,$
xstyle=1, xrange=[-1.5, 1.5], \$
ystyle=1, yrange=[-1.5, 1.5]


This gives a plot like below:

Via the excellent John D. Cook blog. I recommend reading his site if you are interested in a combination of mathematics and Python.

[IDLdoc][repo] 3.6.2 has been released! New features include:

* Bug fix for image directive for image files in other directories specified
with a relative path (fix by Dave Gellman).

* Only copying MathJax for LaTeX-style equations if not already present.

* Fixed crash when invalid format/markup was specified on the docformat line of
a .pro file.

[repo]: https://github.com/mgalloy/idldoc/ "mgalloy/idldoc"

older posts »

• #### GPULib

GPULib enables IDL developers to access the high-performance capabilities of modern NVIDIA graphics cards without knowledge of CUDA programming.

TaskDL is a task-farming solution for IDL designed for problems with loosely-coupled, parallel applications where no communication between nodes of a cluster is required.

#### mpiDL

mpiDL is a library of IDL bindings for Message Passing Interface (MPI) used for tightly-coupled parallel applications.

#### Remote Data Toolkit

The Remote Data Toolkit is a library of IDL routines allowing for easy access to various scientific data in formats such as OPeNDAP, HDF 5, and netCDF.

• #### Modern IDL

Modern IDL offers IDL programmers one place to look, for beginners and advanced users alike. This book also contains: a thorough tutorial on the core topics of IDL; a comprehensive introduction to the object graphics system; common problems and gotchas with many examples; advanced topics not normally found are discussed throughout the book: regular expressions, object graphics, advanced widget programming, performance, object-oriented programming, etc.

• #### IDLdoc

IDLdoc is an open source utility for generating documentation from IDL source code and specially formatted comments.

#### mgunit

mgunit is an open source unit testing framework for IDL.

#### rIDL

rIDL is an open source IDL command line replacement.

#### mglib

mglib is an open source library of IDL routines in areas of visualization, application development, command line utilities, analysis, data access, etc.