Playing with an Enigma machine emulator

I have been intrigued with the Enigma machine for some time now. it is a complicated mostly mechanical mechanism and you can encrypt and decrypt a message with the same settings. In WW2 the senders and receivers worked from a common code book to encode the message that was then delivered by Morse code over short wave radio.  I think Twitter might be a modern day replacement for Morse code and the telegraph…

One description of how this worked is in a software simulator manual HERE. Another good source is HERE.

I’m using the EnigmaCipher application from the iphone App Store on as my Machine. My first code book is HERE, and I’m using one of my twitter users @Septemvigesimal to deliver the messages.  The Germans would commonly replace a comma with a ZZ, a period (or the STOP in a telegram) with an X.

So my first message today (2:46pm EST5EDT 2016-09-06) was:


It was addressed to #13 (just a made up destination), two parts total in the message (tle is short for Teile in German), this was the first teile/part of the message, it was 68 characters long (if I counted right, the initial Grundstellung was YYS, and with the settings from line 13 of the code sheet (the line for 2016-09-06) YYS encoded to NNZ. The Germans got more complicated with this set of letters and the first four from the message itself, but I got lazy.  (Update#1 choose a random three character key.  Encode it with the initial settings.  Save this for the message later.  It will go where NNZ is when you send the message.  When decoding, set machine to settings for the day, enter the last three letters on first line of message & set Grundstellung to these letters.)

You ignore (for now) the ZYYS in the message, and start decoding with the XKHP group of letters. You also start counting the number of characters in the message with the X in XKHP. If I counted right there are 68 (the equal sign at the end of the message is not counted, it’s just a terminator character).

If you feel like playing along and/or like puzzles, grab the app from the app store, print out my code sheet and follow my twitter account. I’ll be sending short messages of whatever strikes my fancy that day. Maybe not every day, and I don’t know for how long I;ll do this, but let’s see how it goes. If you want to write back, tag me in a tweet of your own, and use my code sheet to encode your message. I’ll post links to new code sheets on my twitter account as I upload them.

Have fun!  post a comment with the plain text of the message if you get it decoded.

Moving up or Selling out?

We recently decide to standardize on Microsoft’s business intelligence tools for ETL, analytics and reporting at my employer.  After many years (decades?) working in a *nix environment with perl, shell and MySQL tools I knew I was in for a good amount of retraining.  I’m hoping the effort ends up being an improvement in throughput for me and not an assimilation by the Borg Collective.

I’ve been at this for less than 6 months now.  I did have some familiarity with SQL Server Management Studio before starting down this path.  Very little of that experience helps with the SSxS tools and Visual Studio.  I’ve discovered that the tools are very flexible and  powerful.  They are documented like a traditional software tools.  This means a command or object has it’s specs and options detailed and it’s up to you to figure out why you’d want to use it.

Google and YouTube have been my constant companion in this journey.  There are some really good videos coming out of India that cover some of the basic things you need to know about SSIS (SQL Server Integration Services – the tool used to load files into a database).

I find SSIS is way pickier about data types than perl is.  I spend 40% of my time on a new project just getting dealing with getting the data in the right type to load into the database.  Another 20% of my time is spent googling for ways to do something in SSIS that I used to cut and paste from other perl projects in the past.  I’ve also had Visual Studio play tricks on me when I changed something the “wrong” way.  I think that’s called experience…

By the time I finish converting all my old projects from perl to Microsoft I should have a pretty good grasp of their tools.  We load every conceivable file type from various clients, and I’ll have to deal with every type of file transfer mechanism.  I will have dealt with HL7,  ANSI X12 and fixed wodth data files in addition to The CSV/delimited and Excel files I’ve loaded so far.  I just hope the borg implants don’t hurt too much – Err – that I can turn projects faster.  Yeah, that’s it.  That’s what I meant.

Perl IDE v2.0

I probably wrote this up some time ago. Got a new machine at work & need to set it up so thought I’d do a clean slate install.

Make sure you have the latest Java runtime, and for God’s sake keep that pecker-head updated. At the time of this post Java was at 8u60. I believe Eclipse wants at least 7uXX, but I wouldn’t run Java that old if I were you.

You’ll also need DWIMPerl from here. At the time of this writing the release was Install taking defaults, in my case it installed in C:\Dwimperl. If you want to upgrade all the modules, invoke the “CPAN client” from the start menu subfolder Tools under DWIM Perl. Enter this command upgrade /(.*)/ and go get several cups of coffee.

Next get eclipse using the installer. I chose the 64b Windows version. Since I program in perl and sometimes in PHP but never in Java, I picked the “Eclipse IDE for PHP Developers”. Once the file has downloaded, check the SHA1 signature with fciv. If it matches what Eclipse says it should be, run the installer package to load Eclipse. I downloaded Mars (4.5). Looks like the developer build is Neon M2. Caveat Emptor. As for me and my house, we’ll stick to Mars.

Now in Eclipse go to “Help”, then “Install New Software…”. Add this url: (I wanted the latest and greatest). At this writing, the latest EPIC version was 0.7.x

I also use TortoisSVN (1.9.2)for other development, so I wanted top add Subclipse. In Eclipse go to “Help”, then “Install New Software…” and add this url: The link on, then “Download and Install”, calls the latest version 1.12.x, but the link points to 1.10.x. Whatever.

Well DWIM/Strawberry perl is still updating modules. Time for another cuppa Joe.

TortoiseSVN icons on Windows7

I use TortoiseSVN for my version control system, and have run into a situation where the TortoiseSVN icon overlays disappear after another program loads something or updates itself.

Windows doesn’t contain enough settings in the registry and TortoiseSVN’s settings get pushed down the list or overwritten. The SitePoint Blog that covers this is here.

The offending key location is HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ShellIconOverlayIdentifiers.

Dropbox seems to be the culprit in my case. Delete any that you don’t need or want. After a reboot, you should be back in the water.

Windows 10

I received the update the day it became available.  Had it up and running within 4 hours.

Two things to note:

  1. Don’t attempt this unless you’re sure your hard drive is solid.  I ran SpinRite 6.0 on it and got a clean bill of health.  I also ran SeaTools on it since it was a Seagate drive.  Clean report there too.
  2. Read the descriptions CAREFULLY of the options you are asked to set at the end of the install.  Some, OK most, of them will violate your privacy to some degree.  Make sure you’re comfortable with what information you let Microsoft have.

Windows 10 is programmed to share ALL your WiFi passwords in a semi secure way with ALL your social media friends.  Every access point you have connected to.  Yup.  All of them.

Caveat emptor.  But I’m afraid Resistance Is Futile.

Another year gone by…

embarrassing.  Two years.  Two posts. Sheesh.

A lot has been happening in the PLC.  Kids coming home, new ones joining us, changes at work.  Biggest thing at work is getting deeper onto SQL server, and finding more fun things to do with perl.

I’ve been working with healthcare data (HL7 and X12/837/835).  There are a lot of fun things to mine from the X12 data and it’s easy for our clients to pull from the clearinghouse and upload to our Sharefile.

‘Til next year…  Sigh.

1 day short of a year

So the previous post was almost a year ago. I thought I’d knock some rust off this site and pick it up again.

At work, it’s time to upgrade my perl engine. Was thinking I’d switch to OpenBSD, manage the perl packages with pkg_add, and actually have a dev site and a production site.

Then I ran across eclipse, subclipse, Epic and DWIM perl. I was able to identify the modules in use, make sure they were loaded in DWIM, and even incorporate my own perl library.

I’m still trying to sort out the release to production process, but it will likely be a checkout or update from the SVN trunk once I get comfortable with branching and merging.

Instead of managing yet another server and it’s security (or two), I just need to make sure I have the right ODBC driver, DWIM installed, and tortoise SVN with a scheduled task.

What does your perl Devel environment look like?