Trope

In eleven minutes and some odd seconds, I’d be dead. Not even twelve. Eleven! And I couldn’t do anything to change that less than salutary fact. The “timer” was ticking, but contrary to the popular trope, there was no loose red wire to cut and stop it all. No, the bomb wasn’t even a “bomb” bomb but a routine physics experiment gone terribly wrong, and I knew full well that it couldn’t be stopped thanks to the implacability of runaway exponentials and all that.

Continue reading

I Was (Great American) Eclipsed

EclipseFor those of you who experienced the Great American Eclipse, enough said.  For those who missed it, let me be the first to commiserate with you; you quite simply have no idea.

I could say something like “The moment was glorific;” a true statement, for sure, although an inadequate testament at best.  Indeed, the worst traffic jam in Wyoming history could do nothing to lessen my appreciation and wonder.  I’d do it again in a heartbeat!

BTW, the traffic jam was truly epic.  In my own case, it took ten miserable hours for my wife and I to crawl back to Denver even though the outward journey only took about three.  And we were the lucky ones; three of the four other couples that accompanied us on this trip took at least 13½ exhausting hours to do the same.

To get a good sense of the how the eclipse went down (at least in Casper, WY), check out KCWY13’s Even Scientist Were Blown Away By Great American Eclipse.  I get a good bit of air-time and I only manage to make one flub; see if you can spot it.  As to my favorite moment, at 1:48 or so my friend friend Gary Trapuzzano and his lovely wife Tracey Berlin kiss on camera after totality, clearly elated if also a bit stunned; pretty much summing up the whole experience for me.  Sheer magic.

Again, the eclipse was transcendent.  Word to the wise, though: 4/8/2024 looks to be even better!

Tickety, Tickety Tick

TickerTo develop and back-test trading algos its essential to have great gobs of historical data on hand, almost always at the tick level.  More often than not this data comes from your broker—OANDAAlpariDukasCopy, and Integral (TrueFX), to name a popular few—whether through commercial platforms like MT4 or proprietary APIs.  Alternately, one can use a generic downloader like Birt’s Tick Data Suite.

Over the years I’ve worked with more than a dozen brokers and other data providers so you think I’d have a handle on this stuff by now, but nothing could be further from the truth.  No, its an ever changing and messy landscape.   Continue reading

Cancel That

Cancellation in a multi-threaded Console App can be surprisingly difficult, even though I’ve done it dozens (hundreds?!?) of times before.  As any programmer can tell you, there are the “Things you know” and “Things you merely think you know.”  In programming, fiddly little details count.

I won’t go into the trade-offs between using Tasks or Parallel.For[Each] or TPL DataFlow, but suffice it to say that the later is both the most useful and easiest to get right.  Enjoy…

using System;
using System.Collections.Generic;
using System.Net.Http;
using System.Threading;
using System.Threading.Tasks;
using System.Threading.Tasks.Dataflow;

namespace CancelDemo
{
   class Program
   {
      static void Main(string[] args)
      {
         Console.WriteLine("Press any key to cancel...");
         Console.WriteLine();

         var cts = new CancellationTokenSource();

         var client = new HttpClient();

         try
         {
            var fetcher = new ActionBlock<string>(
               async url =>
               {
                  await client.GetAsync(url, cts.Token);

                  Console.WriteLine($"FETCHED {url}");
               },
               new ExecutionDataflowBlockOptions()
               {
                  CancellationToken = cts.Token,
                  MaxDegreeOfParallelism = Environment.ProcessorCount
               });

            urls.ForEach(url => fetcher.Post(url));

            fetcher.Complete();

            var readKey = new TaskFactory(cts.Token).StartNew(() =>
            {
               while (!Console.KeyAvailable)
                  Thread.Sleep(100);

               cts.Cancel();

               Console.ReadKey(true);
            });

            Task.WaitAny(new Task[] { fetcher.Completion, readKey });
         }
         catch (OperationCanceledException)
         {
         }
         catch (Exception error)
         {
            cts.Cancel();

            Console.WriteLine("Error: " + error.Message);
         }

         Console.WriteLine();
         Console.Write("Press any key to terminate...");

         Console.ReadKey(true);
      }

      private static List<string> urls = new List<string>()
      {
         "https://www.pinterest.com/pin/143270831869696811/",
         "https://www.pinterest.com/pin/155585362100632165/",
         "https://www.pinterest.com/pin/23010648069511614/",
         "https://www.pinterest.com/pin/303711568591359002/",
         "https://www.pinterest.com/pin/314900198915723688/",
         "https://www.pinterest.com/pin/316166836311260373/",
         "https://www.pinterest.com/pin/535576580657166380/",
         "https://www.pinterest.com/pin/56154326576327972/",
         "https://www.pinterest.com/pin/56154326576368600/",
         "https://www.pinterest.com/pin/88523948898601589/",
         "https://www.pinterest.com/pin/108438303498183811/",
         "https://www.pinterest.com/pin/127156389453876236/",
         "https://www.pinterest.com/pin/270708627574674608/",
         "https://www.pinterest.com/pin/368380444492800731/",
         "https://www.pinterest.com/pin/250653535491278041/",
         "https://www.pinterest.com/pin/565483296932119884/",
         "https://www.pinterest.com/pin/173177548141309276/",
         "https://www.pinterest.com/pin/430867889333901210/",
         "https://www.pinterest.com/pin/61361613645883874/",
         "https://www.pinterest.com/pin/16466354858074206/"
      };
   }
}


Guitar #3

Taylor_GS_Mini_e_Koa_FLTD

I am by no means a talented guitarist, although after more than six full months of trying I can report that I have indeed been making progress. Maddeningly-slow-make-you-question-the-whole-thing progress, but progress nonetheless.

I love to twang the strings and hear them resonate.  I love to palpate my fingertips and worry at my hardening calluses.  I love to sub-vocalize the name of a note only to find my fingers on the strings in the (mostly!) correct position. I’ve come to hate my all too weak and bendy ring finger but can’t help but be inordinately pleased those few times it comes perfectly into line without the least bit of wheedling.  I even love the stupid evil what-the-hell-could-they-have-been-thinking F-Major; the barred five-string chord from hell! Continue reading

A Personal Confession

The truth of the matter is that I’ve had relatively little success as an observational astronomer, never no mind the embarrassing fact that I’ve been at it for more than forty years.  Resorting to numeracy, alone, there are at least at least 3×1023 stars in the observable universe (https://en.wikipedia.org/wiki/Star) yet I’ve barely glanced at a measling fraction of that whole.  Take the 4×1012 stars in the thirty-nine Messier Galaxies, for instance, then toss in a few odds and ends from the ARP and NGC yet that wouldn’t even put me within ten orders of magnitude of the theoretical total.  Not that the reality of it all is likely to be a fraction of that optimistic number.  No, I’d be astounded to learn that I’d so much as glanced upon a quadrillionth of it all.  And I’m an unabashed optimist! Continue reading

3 Weeks; 2 Guitars (and Counting)

Epiphone Les Paul Standard PlusProBeing a musical noob, an aspiring guitar player / mangler with a whopping three weeks of superb yet less-than-sufficient tutelage under my belt, it’s only natural for me to “need” a second guitar.  After all, my first guitar is merely superlative, a gorgeous Epiphone Les Paul Standard PlusTop Pro Electric Guitar with the Honey Burst styling.  Surely, I need—dare I deserve!—something more.

Actually, though, I kinda do.  This year’s New Year resolution, like so many before, was to finally (finally!) learn how to play guitar.  I’d been intending to do so for more decades than I care to enumerate but for no explicable reason I just got on with doing the do this year.  I won’t bore you with a full list of my learnings to date but the big takeaway is that if I am to avoid becoming road splat on that big highway to non-suckalege I’ll need to pick up and play a guitar each and every day; every day, without fail. Continue reading