Integrate MSTR with Okta via SAML

MicroStrategy’s directions for enabling single sign-on with SAML are actually pretty good. MSTR bundles Spring Security with SAML support and provides directions for how to enable it by editing web.xml.

»
Author's profile picture Bill Schneider

MSTR FFSQL vs. Live Connection

MicroStrategy offers two different ways to connect to databases with ad hoc SQL, bypassing the managed schema (metrics and attributes):

»
Author's profile picture Bill Schneider

Maven WAR overlay for MSTR Web customizations

MicroStrategy doesn’t provide a lot of guidance on how to manage Web plugins in source control, or build and deployment automation. However, it turns out that Maven WAR overlays are the perfect solution to MSTR web customizations.

»
Author's profile picture Bill Schneider

EC2 proxy to RDS for a static IP address

RDS instances in AWS do not get a static IP address. This is usually a good thing, not a problem. This provides flexibility to preserve availability while the physical RDS host may shift around for resizing, or failing over to a different availability zone (AZ). In either case, clients connect to RDS by hostname, and AWS magically updates the hostname to point at the IP address for the currently active host.

»
Author's profile picture Bill Schneider

Learning Scala for Spark, and the apply method

Sometimes in Spark you will see code like

»
Author's profile picture Bill Schneider

Readability and analogy to music

In music, you can often write the same note two different ways, for example, B-flat and A-sharp correspond to the same key on a piano keyboard. When you use which depends on surrounding context. A chord C/E/G/B-flat is a C dominant 7th and resolves to an F chord. The same chord written as C/E/G/A-sharp is an augmented 6th and resolves to B major. So which way the chord is written tells you something about where it’s going next.

»
Author's profile picture Bill Schneider

Dealing with bad sectors on home PC

I have a Lenovo desktop PC at home and some of the diagnostics on the hard drive were failing, like the Targeted Read Test. The drive is a 2TB Seagate.

»
Author's profile picture Bill Schneider

Spark UDFs to help migrate from other SQL dialects

I found it helpful to create Spark UDFs to make it easier to migrate logic in SQL from another database like SQL Server.

»
Author's profile picture Bill Schneider

Learning Scala for Spark, or, what's up with that triple equals?

I began to learn Scala specifically to work with Spark. The sheer number of language features in Scala can be overwhelming, so, I find it useful to learn Scala features one by one, in context of specific use cases. In a sense I’m treating Scala like a DSL for writing Spark jobs.

»
Author's profile picture Bill Schneider

Getting Spark on Windows to connect to AWS EMR cluster

I managed to get Spark to run on Windows in local mode, and to submit jobs to an EMR cluster in AWS.

»
Author's profile picture Bill Schneider

What does agile development have in common with musical theater?

Working in an agile development environment, I noticed some parallels to my experiences with student theater several decades ago.

»
Author's profile picture Bill Schneider

Using MicroStrategy reports as filters for exists and not exists subqueries

Suppose you want to write a report in MSTR to calculate some measure, filtering on patients who had a certain diagnosis and are not on a certain medication. Both Diagnosis and Medication have many-to-many relationships with Patient, and patient count is a metric defined at or below the patient level.

»
Author's profile picture Bill Schneider

Reporting across different attribute roles in MSTR

Suppose you have a dimensional model about travel prices like this

»
Author's profile picture Bill Schneider

Measuring AWS Redshift Query Compile Latency

AWS is transparent that Redshift’s distributed architecture entails a fixed cost every time a new query is issued. The documentation says the impact “might be especially noticeable when you run one-off (ad hoc) queries.”

»
Author's profile picture Bill Schneider

Pragmatic Functional Programming

I am not passionate about functional programming for its own sake. I am passionate about readability and clean code, and functional programming is a tool to help get there. I take a pragmatic approach: functional programming should be a tool in your toolbox, and you should be ready to use when it makes your life easier. At the same time, I don’t feel a rush to Pure Function and Immutable All The Things. I like languages that support functional programming but don’t strictly require it.

»
Author's profile picture Bill Schneider