Opinions on truthiness across languages

Different languages have different opinions about what to treat as “truthy” or “falsy” when using a non-boolean object as an expression inside an if statement.

»
Author's profile picture Bill Schneider

Comparing PostgreSQL json_agg and Spark collect_list

In PostgreSQL, you can convert child records to look like a nested collection of objects on the parent record. This is useful if you want to convert a relational-style parent-child model into a document style, with the child records represented as a composite within the parent document.

»
Author's profile picture Bill Schneider

Don't Redux All The Things

Redux is a library and a pattern for managing state in front-end applications. It is typically associated with React but it can be used with other frameworks as well. Instead of directly modifying state, components dispatch actions, which are then handled by reducers. Reducers take current (immutable) state plus the action to produce a new state. The new state is then wired into React component properties, which triggers re-rendering. This interaction is shown in the diagram below:

»
Author's profile picture Bill Schneider

Balancing early and later project risks

One of the things I liked about this post on “Senior Engineers Reduce Risk” is how it called out two different kinds of project risks:

»
Author's profile picture Bill Schneider

Multiple teams, one codebase

When multiple (small, agile) teams are working on the same codebase, it can be tempting to create a branch for each team so they can work in isolation without impacting each other. Don’t do it. Teams working in isolated branches may appear to make faster progress, but it is an illusion–in reality, work in an isolated branch can’t be delivered without getting through some big scary merge in the future. The hard work of integration is just being kicked down the road and gets harder the longer it waits. There is no substitute for coordination and communication.

»
Author's profile picture Bill Schneider

SSIS data flow vs. insert-select

To transform data within a single SQL Server, with source and target data in the same database, it is probably faster to use an INSERT statement than a SSIS data flow task.

»
Author's profile picture Bill Schneider

Throwaway code isn't always wasteful

In a lean/agile environment, you avoid Big Design Up Front (BDUF) in favor of getting something small and simple to work first, then iterating as you learn more.

»
Author's profile picture Bill Schneider

Microstrategy Visual Insights live connection issues

Microstrategy’s data import feature is promising, because it can shorten the time to insight. Instead of architecting a project schema up front (attributes, facts, metrics), you can import tables directly into a dataset (Intelligent Cube).

»
Author's profile picture Bill Schneider

Defining new metrics in Microstrategy with R integration

Microstrategy has a new R Integration Pack which allows you to use R scripts to calculate new Microstrategy metrics. Here are some tips on how to use it. I also have a sample R script that will call the qicharts package.

»
Author's profile picture Bill Schneider

Aaron Burr quotes on the lean startup

My kids have been listening to the “Hamilton” soundtrack a lot. When I was Googling for something to answer a question for them, I came across this quote attributed to Aaron Burr:

»
Author's profile picture Bill Schneider

Is there a good reason to use SSAS cubes anymore?

After using SSAS cubes on a project recently, I’m not sure I would do it again. Some of my observations:

»
Author's profile picture Bill Schneider

Unit testing Spark Dataframe transformations

Parts of Spark jobs that do pure-functional transformations on dataframes or RDDs – independent of I/O – are ideal candidates for unit testing.

»
Author's profile picture Bill Schneider

React, ES6 and JSX readability

Previously I complained about React and JSX readability. I was unhappy with something like this:

»
Author's profile picture Bill Schneider

Good-enough secret message encoder on JSFiddle

One of the activities at my daughter’s 9th birthday party was decoding secret messages (e.g., “be sure to drink your Ovaltine”) using this decoder ring my wife found on Pinterest.

»
Author's profile picture Bill Schneider

Rant - Java 8 streams are too little, too late

I was looking at some code the other day to convert a comma-delimited string like "1,2,3,4" into a list of integers.

»
Author's profile picture Bill Schneider