[mgunit][repo] 1.6 has been released! New features include:

* Fix for bug when no filename with jUnit output format

* Recursively search directories below test suite home directory for `*_ut.pro`
and `*_uts.pro` files

* Fixed for bug in `mguttestsuite_define::addTestingFolder` that did not add
absolute paths correctly

* Add superclasses of test classes recursively

You can [download] a distribution with a `.sav` file and documentation, or just access the [repo] as needed.

[repo]: https://github.com/mgalloy/mgunit/ "mgalloy/mgunit"
[download]: https://github.com/mgalloy/mgunit/wiki/Releases "mgunit releases"

This is [fascinating]:

> People use imprecise words to describe the chance of events all the time — “It’s likely to rain,” or “There’s a real possibility they’ll launch before us,” or “It’s doubtful the nurses will strike.” Not only are such probabilistic terms subjective, but they also can have widely different interpretations. One person’s “pretty likely” is another’s “far from certain.” Our research shows just how broad these gaps in understanding can be and the types of problems that can flow from these differences in interpretation.

For example, below are probability distributions for some common phrases:

via [FlowingData]

[fascinating]: https://hbr.org/2018/07/if-you-say-something-is-likely-how-likely-do-people-think-it-is "If You Say Something Is Likely, How Likely Do People Think It Is?"
[FlowingData]: http://flowingdata.com/2018/07/06/how-people-interpret-probability-through-words/ "How people interpret probability through words"

I released a new version of my iOS app, [Simple Checklist], today. Simple Checklist provides an easy way to track progress through checklists. I use them for my morning routine, weekly review, physical therapy, and other repeated sequences.

The release notes for 1.4.0:

- [NEW] Dark mode
- [NEW] iPhone X support
- [NEW] Haptic feedback
- [NEW] Markdown format for exported checklists
- [FIX] Fixed order of exported checklist

Simple Checklist is available on the [iOS App Store].

[Simple Checklist]: http://michaelgalloy.com/simple-checklist
[iOS App Store]: https://itunes.apple.com/app/id973818951

[Mathpix] is a great idea, executed well:

> The Mathpix desktop app allows users to take screenshots of math equations and paste the extracted Latex, all with a single keyboard shortcut.

For example, I wrote this on a piece of paper and took a picture of it:

And Mathpix put the following text on my clipboard:

\sum _ { i = 0} ^ { n } i = \frac { n ( n + 1) } { 2}

Which is exactly right:

$$\sum _ { i = 0} ^ { n } i = \frac { n ( n + 1) } { 2}$$

Mathpix can grab anything that is displayed on your screen.

The Mac app is free on the Mac App Store and there is a corresponding iOS app which is free with in-app purchase.

[Mathpix]: https://mathpix.com "Mathpix"

IDL 8.7 was released recently. The listed features are:

- `ROUTINE_DIR` function that returns the directory for the file containing the calling routine
- asynchronous job classes
- a few miscellaneous other updates

The asynchronous job classes look interesting:

> The IDLAsync classes allow you to specify units of work to execute asynchronously outside the main IDL session. To do this, create an IDLAsyncQueue and one or more IDLAsyncJob objects that encapsulate the work to be performed. As jobs are added to the queue, they will be executed at some point in the future as resources are available. When a job is complete, you can retrieve its results for further use. You can also construct an IDLAsyncJoin object and pass it into the jobs on creation. If you do this, you can wait on the join object for all of the jobs it observes to be finished before continuing.

Check the [release notes] for more details.

[release notes]: http://www.harrisgeospatial.com/docs/whatsnew.html

[HoloViews] is yet another Python visualization library, but it has a different approach:

> With HoloViews, instead of building a plot using direct calls to a plotting library, you first describe your data with a small amount of crucial semantic information required to make it visualizable, then you specify additional metadata as needed to determine more detailed aspects of your visualization. This approach provides immediate, automatic visualization that can be effortlessly requested at any time as your data evolves, rendered automatically by one of the supported plotting libraries (such as Bokeh or Matplotlib).

It can produce a variety of visualizations — check out its to see more examples.

[HoloViews]: http://holoviews.org "HoloViews"
: http://holoviews.org/gallery "Gallery - HoloViews"

The IDL Usenet newsgroup has moved to a Google Group:

This Google Group is a continuation of the Usenet group comp.lang.idl-pvwave, but allows for better spam filtering. It is for discussion of the Interactive Data Language (IDL), developed by Harris Geospatial Corporation. Questions about ENVI, a geospatial analytics software written in IDL are welcome. Discussion of the similar PV-WAVE language is also allowed.

The big question now is how to save the posts from the old newsgroup.

[iTerm2] is a macOS terminal emulator with a lot of extra features. In particular, it has a simple protocol for displaying images inline. It comes with a program `imgcat` that will display common image formats such as PNG, JPEG, GIF, etc. Most of the images I deal with are FITS, though. I wrote `fitscat` to be a handy utility to display FITS images, as well as to print basic information about the FITS file such as a listing of extensions or an extension header.

For example, `fitscat` can display an image in an extension, as seen below:

There are options to specify a minimum and maximum value for scaling, as well as to use a simple filter such square root.

Also, `fitscat` can also print basic information about a FITS file, such as a listing of extensions:

CoMP$ fitscat --list 20150624.170419.comp.1074.iqu.5.fts
Filename: 20150624.170419.comp.1074.iqu.5.fts
No. Name Ver Type Cards Dimensions Format
0 PRIMARY 1 PrimaryHDU 67 ()
1 I, 1074.38 1 ImageHDU 33 (620, 620) float32
2 I, 1074.50 1 ImageHDU 33 (620, 620) float32
3 I, 1074.62 1 ImageHDU 33 (620, 620) float32
4 I, 1074.74 1 ImageHDU 33 (620, 620) float32
5 I, 1074.86 1 ImageHDU 33 (620, 620) float32
6 Q, 1074.38 1 ImageHDU 33 (620, 620) float32
7 Q, 1074.50 1 ImageHDU 33 (620, 620) float32
8 Q, 1074.62 1 ImageHDU 33 (620, 620) float32
9 Q, 1074.74 1 ImageHDU 33 (620, 620) float32
10 Q, 1074.86 1 ImageHDU 33 (620, 620) float32
11 U, 1074.38 1 ImageHDU 33 (620, 620) float32
12 U, 1074.50 1 ImageHDU 33 (620, 620) float32
13 U, 1074.62 1 ImageHDU 33 (620, 620) float32
14 U, 1074.74 1 ImageHDU 33 (620, 620) float32
15 U, 1074.86 1 ImageHDU 33 (620, 620) float32

Or display a header:

CoMP$ fitscat --header -e 3 20150624.170419.comp.1074.iqu.5.fts
XTENSION= 'IMAGE ' /extension type
BITPIX = -32 /bits per data value
NAXIS = 2 /number of axes
NAXIS1 = 620 /
NAXIS2 = 620 /
PCOUNT = 0 /
GCOUNT = 1 /
EXTNAME = 'I, 1074.62' /
NAVERAGE= 16 / Number of images averaged together
LCVR2TMP= 33.429001 /
LCVR3TMP= 33.715000 /
LCVR4TMP= 33.738998 /
LCVR5TMP= 33.618999 /
LCVR6TMP= 28.847000 /
NDFILTER= 8 / ND 1=.1, 2=.3, 3=.5, 4=1, 5=2, 6=3, 7=4, 8=cle
BACKGRND= 13.154 / Median of masked line center background
FLATFILE= '20150624.070023.FTS' / Name of flat field file
DISPMIN = 0.00 / Minimum data value
DISPMAX = 5.00 / Maximum data value
DISPEXP = 0.50 / Exponent value for scaling

The full interface of `fitscat` is shown below:

$ fitscat --help
usage: fitscat [-h] [--min MIN] [--max MAX] [--debug] [-d] [-l] [-r]
[-e EXTEN_NO] [-f FILTER] [-s SLICE]

fitscat - a FITS query/display program

positional arguments:
filename FITS file to query

optional arguments:
-h, --help show this help message and exit
--min MIN min for scaling
--max MAX max for scaling
--debug set to debug
-d, --display set to display
-l, --list set to list HDUs
-r, --header set to display header
-e EXTEN_NO, --exten_no EXTEN_NO
specify extension
-f FILTER, --filter FILTER
specify filter (default: none)
-s SLICE, --slice SLICE
specify slice of data array to display

Source code for the Python script is available on [GitHub]. The script is compatible with Python 2 and 3, but requires standard scientific Python packages AstroPy, NumPy, and PIL.

[iTerm2]: https://iterm2.com "iTerm2"
[GitHub]: https://github.com/mgalloy/scripts/blob/master/fitscat "scripts/fitscat"

NIST has published new standards for digital identifies. Highlights, via [Bruce Schneier], for passwords:

1. No password rules! Use pass phrases.
2. Don't expire passwords.
3. Allow password managers.

I have written about this [before], where I said my personal pet peeve was forced password expiration (#2). I hope organizations start using the new standards quickly!

[before]: http://michaelgalloy.com/2017/03/16/i-hate-password-rules.html "I hate password rules"
[Bruce Schneier]: https://www.schneier.com/blog/archives/2017/10/changes_in_pass.html "Changes in Password Best Practices"

I presented a [poster] at a [Space Weather workshop] at the Lorentz Center in Leiden, Netherlands last week:

> **Real-time automated detection of coronal mass ejections using ground-based coronagraph instruments**
> Coronal mass ejections (CMEs) are dynamic events that eject magnetized plasma from the Sun’s corona into interplanetary space. CMEs are a major driver of solar energetic particle (SEP) events and geomagnetic storms. SEP events and geomagnetic storms pose hazards to astronauts, satellites, communication systems, and power grids. Understanding CME formation and predicting their impacts at Earth are primary goals of the National Space Weather program. St. Cyr et al. (2017) reported on the use of near real-time white light observations of the low corona from the COSMO K-Coronagraph (K- Cor) to provide an early warning of possible SEP events driven by fast CMEs. Following that work, one of us (Thompson) created a new CME detection algorithm adapted from the Solar Eruptive Event Detection System (SEEDS) code for use with K-Cor observations from the Mauna Loa Solar Observatory (MLSO) in Hawaii. We develop performance metrics and report on the success of the algorithm to detect CMEs in the 2017 K-Cor observations. Measures of success include the ability of the algorithm to detect an event and the amount of time between the event onset and its detection. The algorithm successfully detected 20 of the 35 CMEs identified between 1 Jan and 31 August, 2017 in the K-Cor data. There were 10 false positive events during this time period. The threshold for CME detection is discussed as a function of CME visibility, instrument background, and sky noise. The code has been modified to run in an automated mode and is in the process of being integrated into the real-time data processing pipeline at Mauna Loa. We report on current status, real-time alerts, and future upgrades.

[Space Weather workshop]: http://lorentzcenter.nl/lc/web/2017/921/info.php3?wsid=921&venue=Oort "Lorentz Center - Space Weather: A Multi-Disciplinary Approach "

[poster]: http://michaelgalloy.com/wp-content/uploads/2017/10/mgalloy-lorentz-workshop-2017.pdf "Real-time automated detection of coronal mass ejections using ground-based coronagraph instruments"

« newer postsolder posts »