Identifying flags with AI

If you have seen a flag of a Swiss canton, but don’t know which canton it is for, you have found the solution!

This web app allows you to draw an approximation of a flag you’ve seen, then uses a neural network to try and identify it.

Combining CSV into one Excel File

CSVMerge is a small command line application that will take one or more CSV files and merge them all together into a single XLSX file. One Worksheet per CSV is created

CSVMerge Screenshot
Combining three files with automatic column sizing

The application supports wildcards, and any CSV column separator (such as semicolon and tabs). It can also automatically size columns to fit the contents.

ADeLe 1.01 Update

I released a little update for my App-V loading tool that adds the following things:

  • Fixed a bug that prevented launching shortcuts from a package that was sequenced in a PVAD
  • Fixed a bug that sometimes didn’t update the application window when a package got (un-)published
  • Added the ability to copy package info to the clipboard with right click or Ctrl+C

You can download the new version from here: http://exar.ch/adele-app-v-debugger/

ADeLe 1.0 Release

I just released version 1.0 of my App-V package debugging tool. Changes in this version are:

– Launching multiple commands in quick succession now adds them to a queue instead of displaying an error
– There is now an option to automatically unpublish packages before removing them
– There is now an option to start virtual applications as non-admin even if ADeLe is running as admin

You can download the new version from here: http://exar.ch/adele-app-v-debugger/

Keplerian Elements for Approximate Positions of Minor Planets

NASA has had simple approximations of orbital elements available on their website for years, however those only list the major planets and Pluto.

I needed approximate positions for big asteroids and dwarf planets for a project and couldn’t find them anywhere, so I calculated a linear best fit based on data from NASA Horizons.

The resulting data is available here: Keplerian Elements for Approximate Positions of Minor Planets

A quick note: Many trans-neptunian objects have orbital elements that move around all over the place. The approximations here are valid over the quoted time line (1950-2100) but you cannot extrapolate them into the future.

App-V Debugger release

For App-V 4 there used to be quite a nice tool called AC/DC from Login Consultants to load and debug packages. They did release a new version for App-V 5 too, but it suffers from general slowness which always annoyed me when having to test my sequenced packages.

So I simply made my own app and properly used multi-threading to make sure the UI always stays responsive even while the application is doing stuff. The end result was the “App-V Debugger and Loader” or short “ADeLe”.

You can watch a quick overview about what this tool can do here:

And download the app here: ADeLe 0.90

Automating SCCM global conditions with Powershell

Microsoft has added a lot of new Powershell cmdlets to Configuration Manager recently, but one thing is still notably absent from the official API, and that’s handling of global conditions, or Requirements as they are called in the GUI.

paint-requirements

A few months ago rfl_raphael posted a script on Technet that allows adding global conditions. I updated that script to support Windows 10, changed a few oddities such as allowing to run it directly from a ConfigMgr drive and fixed a few error messages. I also added two other scripts that allow reading and removing global conditions.

You can download the combined script collection here: GlobalConditionCmdlets

With these scripts you can for instance list all applications that only deploy to a primary user like this:

$applications = Get-CMApplication

$applications | % {
 $deploymenttypes = $_ | Get-CMDeploymentType

 $appname = $_.LocalizedDisplayName
 $deploymenttypes | % {
  [array]$requirements = Get-CMDeploymentTypeGlobalCondition.ps1 -ApplicationName $appname -DeploymentTypeName $_.LocalizedDisplayName

  if ($requirements.Name -like "*Primary*") {
   "Application $appname, DeploymentType $($_.LocalizedDisplayName) has"
   Write-Host ($requirements.Name) -ForegroundColor yellow
  }
 }
}