Behind the Scenes

Stats, Data, and Rock & Roll

Posted on

I think Facebook thinks I’m a bot.

William Steffey and I are putting some serious focus on promoting his music this year. Running ads on Instagram is the first part of that. A Facebook business account comes with a lot of data, so surely I can use my statistical background to get us some sort of advantage?

The standard strategy for promoting music would be to figure out what bands and artists William sounds like and then reach out to them. But he doesn’t really sound like anyone. Really! We ran a survey and the answers were all over the place. If you don’t believe me, head on over to Spotify and then leave your opinion in the comments! Please?

For now, we’re targeting an eclectic mix of music fans based on the survey results. And we’re getting lots of feedback about how the group is responding to the ads. Age, gender, location. But nothing about which artist(s) they liked that put them on our list to begin with. As results come in, I want to be ready with some Bayesian estimation tools to narrow down the best audience for our ads.

Bayesian estimation is all about conditional probability. What is the likelihood of A, given that B is true? In this case, to give an example, What is the likelihood that someone who responded favorably to our ad is a fan of David Bowie or U2 or The Killers or – you get the idea.

Most people running Facebook Ads campaigns on a small scale aren’t former actuaries, so they helpfully provide potential audience information in the form of graphs and summaries. I want everything as granular as possible though. I can get there with a bit of data entry work that I’m happy to do, but I think I ran over my limit today. The page is telling me there’s no data available.

Fingers crossed that I can convince tech support of my humanity.

Behind the Scenes

Just the posters for now

Posted on

I got so much done tonight after my first office day in who can say how long. I made a poster, I did laundry, I scooped two cat boxes, and I put in a big grocery delivery order for tomorrow (before my free trial of the delivery service expires). What I did not do is a long, thoughtful blog post.

Saturday’s poster:

Sunday’s poster:

Today’s poster:

Behind the Scenes

Priority Shift

Posted on

I was planning on a big catch-up post for today, then I got a call yesterday evening about a temp job starting this morning. I made two posters over the weekend, and I have so much to say about the process – instead, I’m brushing the lint off my pants suit and packing a sandwich. I did take notes on the whole week’s worth of artists last night, so I can keep on track despite work and Thanksgiving. Fingers crossed.


Behind the Scenes

The weekend got away from me

Posted on

Things started well enough yesterday. I researched Henderson Bromstad Art Co, and started work on a self-portrait with text. They do a lot of chunky shapes filled with text. Things that look like linocuts, lots of bold colors, messy edges, overlap, repetition.

My plan was to make something for the front page of this site, rather than a poster specifically. My challenge, my rules, right? Anyway, there were a lot of distractions this weekend, including a 22 hour long visit from my sister the pediatric oncologist. There was a lot of pizza and wine and talking and music – and not so much work as I might have liked.

Also, I keep running up against my own vanity in trying to do this self portrait. Apart from my hair, about which I have no illusions, I’m trying too hard to make it pretty. Not the point at all. And, more importantly, not giving a feel for the artists I’m trying to emulate. I think I’ll print it out as line art and maybe work with pencils for a bit.

I’m thinking it would be fun to cover my face with “soft skills.” Maybe go full resume and add a sweater with my education and a background with job history?

Today’s artist is Fons Hickman. There are a few more hours in the day and I’m going to spend some time on them. I’ll try to make two things tomorrow and get caught up. In the meantime, enjoy my smiling face.

Behind the Scenes

Going to need a bigger boat.

Posted on

I was planning to do a follow-up post with my list of projects from Evernote. That would be easier said than done. The attached image shows some, but not all of my lists. Instead of overwhelming you with all of this nonsense. I’m going to dig in on my own and pick a few to expand on. Also, there are probably quite a few items on here that aren’t even going to make sense to me. This will be a good culling exercise.

In the meantime, I was trying to come up with a Python script for playing Spider Solitaire. I play on my iPad and I’m usually pretty good at solving the puzzles (up to three suits). When I get stuck, though, it really feels like I’m spinning my wheels. I don’t know if I want to calculate the probability of a given move being useful, or maybe just keep track of the choices I’ve made so I don’t make the same ones again? Or maybe this isn’t a problem that lends itself to Python. I’m sure I can find something better to do.

Behind the Scenes

Relaunch, Step 1

Posted on

Hi, all. Last week, I started working through the book Relaunch You, by Catherine Morgan. I’m trying very hard to make my job search work and a big part of that is figuring out what I really want and focusing on it. I brainstormed on the first set of questions and, here, I’m going to flesh out my scribbled down notes. With some screen grabs from TinyKittensHQ thrown in for interest.

Grandpa Mason and kittens

Question 1: What did you like doing in the past?

These questions are all tricky for me. When I’m doing things, I don’t tend to think about them. Every now and then, however, something will jump out at me. Like, I’ve noticed that I can spend a lot of time working on fussy little details, whether it’s cleaning up keyframes in an animation or reconciling data in an accounting spreadsheet. These are things that should be boring and tedious but, for me, they push the same buttons as playing solitaire or doing a sudoku. And I like those sort of puzzle games. (Cryptic crosswords are my favorite.)

I like making order from chaos. Arranging things into like groups; smoothing raw edges, that sort of thing. (And yet, somehow this doesn’t translate into a tidy apartment.)

I like visible results. I knit as a hobby and I love seeing a simple progression of stitches turn into a beautiful lace scarf. Or seeing some patches of graphite suddenly render a three dimensional form. (I also draw as a hobby.) I find it challenging to work on things like error-checking, where – unless you find problems – your work looks the same when you’re done as it did when you started. On a similar note, I like feedback. Maybe that reveals my insecurity, but I’m trying to include everything here. When I say feedback, I don’t even mean praise, so much as reassurance – being openly praised actually makes me uncomfortable.

My favorite kind of feedback is getting a laugh. I enjoy laughing, but making other people laugh is a thrill like nothing else. But it has to happen organically. I can’t be funny on demand.

I like to learn. The less relevant, the better. As I type this entry, I’m listening to a group of scholars discuss ancient Persia. My grades in college were okay for classes in my major, but excellent for all my electives.

I like coming up with ideas and making plans. There are half a dozen “ideas” lists in my Evernote files. Knitting ideas, data viz ideas, “million dollar” project ideas, and even ideas for books and movies – I’m not a writer. If anything, I have too many ideas. The plan is for that to be the next big blog post, actually. Take a closer look at some of my idea lists and see which would make a good coding project.

Kittens can climb!

Question 2: What would you change?

What would I change? About what, book? My past jobs? My self? The world?

Something I definitely ran into in my actuarial jobs, and I see a lot of it in coding culture now, is people being very into the tools. I don’t know why this is such a barrier for me. In the past, I suspect it was because deep down I disliked being an actuary and wanted to minimize the amount of mental energy I gave to it. Now, I think it’s because it reminds me of the actuarial world and also because – let’s face it – it makes me feel stupid. There’s so much to learn and I try to join these Meetup groups and Slack chats to get more exposure, but I come away feeling like I’ll never know enough. And, I’ve started to realize, running down all those rabbit holes is keeping me from making actual progress. Now I just add them all to a list and I’ll learn them when I learn them.

Another thing I’d change from my old jobs is a tendency to have arbitrary and inconsistently applied rules. A great way to help favored employees succeed is to let them let them know which rules could be ignored. When less-favored employees eventually learned the shortcuts, they’d be punished for breaking the rules – pointing out that your peers were doing it too would only make you look childish. [The urge to delete this paragraph is so strong.]

One big thing I’m trying to change about myself is to be more willing to make mistakes. I have a tendency to hold back and wait for a “grownup” to tell me what to do. It ties in with that need for feedback I mentioned above. I hold back because I don’t trust myself not to break or ruin something. It wastes time and it makes me look like I don’t know what I’m doing. It’s why it’s taken me so long to learn to code. The language part is easy. The obstacle has been setting up the infrastructure; installing things and connecting things and all that tinkering under the hood, software-wise.

The biggest thing I’d change about the job market is the whole way we do salaries. The secretive, adversarial process that makes nobody happy. Why should you be paid based on how good you are at negotiating instead of how good you are at your actual job? Why is it taboo to talk about? I’m very glad that there are sites like Glassdoor that make that information public, but it’s only a start.

All together

Question 3: What have you always wanted to try?

And the questions get harder and harder. I don’t have a lot of wants; I’ve always considered myself a fairly complacent person. [Says the woman who threw away over a dozen years of hard work to start her life over with no plan. I guess I save my discontent up for a grand gesture?]

I would like to work in a “cool” office, like the ones I see at some of these Meetups I go to. I’ve always liked offices. As a kid, I used to look through office supply catalogs and want a reason to use all of the stamps and hole punches and colorful hanging folders. I still get a kick out of having the right tool for the job. [Wait! Wasn’t I complaining half a page ago about the people who are too into the tools??? I contain multitudes.]

Aiming a little higher, I’d love to be an anonymous benefactor. But crazy stuff, like paying a crew to sneak out at night and fix potholes. And mundane things too. Buying a round of drinks for the whole bar. That’d be great. I guess that’s more of a “bucket list” item, which is the next question.

A realistic thing I’ve always wanted to try is creating educational content. That’s a thing I can do; I just have to pick a thing and focus. I’d like to tie this in with the coding and the data visualization, but I know that facts and data don’t always change minds. [Hmmm. Add that to my list of reservations about pursuing data science. Oh, did I not mention I have reservations? That’s part of why I’m doing this exercise.]

Nap time!

Question 4: What is on your bucket list that you’ve been meaning to do?

I’m not sure this isn’t the same question as the last one. (In the book, these four questions were in a paragraph. The numbering is mine.) As I mentioned way back in Q1, I have a lot of ideas saved in Evernote docs. And I plan to write more about them in the coming days. Those are my bucket lists. That, and buying a round of drinks for the whole bar. Maybe I’ll do that when all of this introspection leads me to a great new job. Cheers!

Behind the Scenes

New Project: Conversational Python

Posted on

As I’m trying to learn Python, I try to go to coding Meetups and other events. When I go, however, I’m hit with so many things that I don’t understand that people are discussing so casually. It makes me feel like I’ll never get there. Meanwhile, the coding books and tutorials move so slowly and helpfully through the fundamentals that I fear the two will never meet up.
For that reason, I’m making a point of writing down and looking into any concept that I don’t get. The plan is to build an e-learning module to go along with a code-learning plan, but it’s also for me.

My first real attempt was today. I listened to the first half of Talk Python to Me Ep. #153 with Nick Coghlan. Every time I started to get lost, I paused the feed and wrote down what I didn’t understand. Often phonetically.

The following partial glossary is just from the first half of the podcast. Maybe I will get to the rest tomorrow.

My messy notes

PEP: Python Enhancement Protocol

wire protocol structure using destruct(?) module to construct messages to send them back and forth.

ordinary squelchers don’t work in HF. Have to do signal analysis to detect voice.
Squelcher: An electric circuit that cuts off a radio receiver when the signal is too weak for reception of anything but noise.

C Programming for the DSP but we didn’t have a proper test harness; just a C application
DSP: Digital Signal Processing

next level of integration testing

control and orchestration language

Python unit test module

I-fall(?) [extreme programming; test driven development]

It’s Dave Beazley’s fault… SWIG existed. C++ driver ran on host. Used to talk to DSPs.
SWIG: a tool for building C/C++ extensions to Python.

Wrote one .i file for SWIG to wrap the production driver

Can express more simply in Python code than in production code. Tests in Python express your intent, then it doesn’t matter what your production code is.

Open source supply chain managment

Anything it didn’t do, I just added a library. Doing a lot with CORBA distributed communication protocol.

request brokers: In distributed computing, an object request broker (ORB) is a middleware which allows program calls to be made from one computer to another via a computer network, providing location transparency through remote procedure calls.

Used for test automation, hardware simulators, web app dev dating from the CGI days – which is actually how we wrote the original distributed system orchestration. Which you now mostly see in things like Ansible and Salt and Python wrappers around Docker and Kubernetes.

Micro controller code where your Python program almost is the operating system – wire your lambda expressions directly to hardware interrupts.

Origins in ABC research language (to teach people to think computationally). Base layer of imperative procedural programming (how humans think; doesn’t scale)

privileged access

interpreter can do things that ordinary python code can’t.

syntactic sugar – make sure there’s a procedural equivalent

Web frameworks, gui libraries, scientific stacks

Ansible: Python had been part of Linux distributions almost from the beginning. So sys admins started doing admin scripting.

Procedural model; move to declarative model further up the stack

random forest

deep learning

sql alchemy (watch talks about its design)

In computer architecture, cache coherence is the uniformity of shared resource data that ends up stored in multiple local caches.

Tcl/Tk: Tcl is the short form for ‘Tool Command Language’ and Tcl Tk is the term used for referring to the toolkit available for this programming language.

GNOME: a desktop environment composed of free and open-source software that runs on Linux and most BSD derivatives

AIX (Advanced Interactive eXecutive, pronounced /ˌeɪaɪˈɛks/[3]) is a series of proprietary Unix operating systems developed and sold by IBM for several of its computer platforms.



IDLE (in standard library)

QT as a C++ wrapper tried to use native widgets when it could

GTK emerging as way Linux distros would do desktop

Microsoft Foundation Class Library (MFC) is a C++ object-oriented library for developing desktop applications for Windows.

WX Python, WX Widgets, PY QT

Unresolved fight between QT and GTK on Linux

GTK’s efforts to support anything cross-platform isn’t really a thing. Linux/Unix equivalent of Win32 API. Not really cross-platform because it doesn’t delegate to platform-native stuff when you’re running someplace other than Linux. And that (native widgets) is what it takes to make your app look like it belongs.

(tuned out for a bit here)

Android on Dalvik layer (of Linux)… Java Runtime?

Electron JS, Cordova, Ionic, all the other frameworks

Phoenix Project, WX Python 4.0.

(halfway through at this point and enough to be going on with)


Behind the Scenes

Shawl Math

Posted on

I had a phone call with a potential employer the other day and I found myself trying to explain one of the ways that I use my mathematical and forecasting skills in a situation where someone else might not recognize the opportunity. They make perfect sense in my head, but sound a little bit rambling when I try to explain them. Putting these instances in writing, with examples and diagrams, can only help. The example that came up on the phone was from my time with Mochimochi Land, and I’ll cover that in a future post. Today, I’ll stick to something more current.

I recently started knitting the Nurmilintu shawl out of some beautiful gradient yarn. The wedge shaped shawl alternates between solid garter stitch and panels of lace. When I finished the first garter section, I still had quite a bit of yarn left. In general, that’s a good thing, as it’s better to have too much yarn than not enough. In this case, however, failing to use all of the yarn would mean not using what I considered to be the prettiest color at the end of the gradient. So, last night, after finishing the first section, I stopped, weighed my yarn, and made adjustments using a Google spreadsheet. (I miss Microsoft Excel, but can’t justify the expense.)

The first step was to count the stitches in the shawl. It starts with a cast-on of four stitches. On odd rows, there’s an increase at the beginning of the row and a decrease at the end. The stitch count doesn’t change. On even rows, there’s only the increase at the end of the row and the stitch count increases by one. So, every pair of rows, the stitch count increases by one. The instructions are to repeat these rows until there are 79 stitches. 75 repeats (150 rows) will accomplish this. Using the geometric formula for the area of a trapezoid, the total number of stitches is:

(150 rows) * (4 stitches + 79 stitches) / 2 = 6,225

Making the same calculations for each section, I ended up with a total of 20,720 stitches. So, the first section of the shawl represents 30% of the stitches. Weighing what was left of my 100g skein of yarn, I found that it was only 25% used up.

My first thought was to add an additional section, as suggested by the pattern. I was able to try this out on paper. Each garter section after the first is 36 rows long (+18 stitches) and each lace section is 18 rows (+9 stitches). This would increase the total to 29,225 stitches and that would mean that I was only 21% through the pattern with 25% of my yarn gone. So, not an option. Instead, it made sense to increase each section.

If my first section (6,225 stitches) took 25g of yarn, then 100g of yarn should get me 24,900 stitches. I set my calculations up in a spreadsheet, multiplying each row length by the same factor and then adjusting that number to get close to 24,900.

  • First of all, I added two more rows at the end to account for binding off the stitches. Three might make more sense, as it’s important to bind off a lace project very loosely.
  • Secondly, while the garter sections can be any length, the lace sections need to follow a chart. This limits them to a repeat of six rows.

If I needed these calculations to be more robust – for example if this blog post results in a lot of knitters asking me to make custom pattern adjustments – I would set this up with a bit of code and/or formulas. As I only needed this answer once, the sheet is set up to require a little trial and error on my part to get to the optimal number. Once I knew that the adjustment would be small, I hard-coded the number of lace rows at 18 and then recalculated the adjustment for the garter rows only. When I was happy with the closeness of my number, I replaced the calculated row counts with the next-lowest even integer.

It’s also important to remember that knitting is pretty variable in practice and the amount of yarn I’m using can vary. For this reason, I tried to keep the estimated stitch total well under 24,900. I also calculated how much yarn should be left in the skein at the end of each garter section. That way, I can check and adjust my estimates as the project continues, and I’ll be more likely to succeed in using all of the blue yarn without running out.

Behind the Scenes

What’s New With Me -or- Maybe This Time, I’ll Finally Stick With Blogging

Posted on

If you’re reading this, it’s probably well past 2017 and you’ve gone back into the archives of this page to see how far I’ve come. That, or [some explanation involving technology of the future that I couldn’t possibly understand]. My point is, nobody is reading this so there is no pressure on me to have a great writing voice or even to be entertaining.

Eventually, I want this blog to have a point and to have a voice. I don’t know what either of those are yet and, waiting to start until I discover them has not gotten me anywhere. I’m going to start with the mess I have and see what I end up focusing on.

I start a job tomorrow. It’s not a job I’m terribly excited about, but it is something to slow my financial hemorrhaging and give me some breathing room to focus on my medium to long term goals. As far as I can tell, the work is filing documents and the pay is just above minimum wage. The start time is really early, but I should be home early enough to get some real work done.

Look at those handsome sweeties!
Henri and Joseph, from their NextDoor post.

We (WS and I) adopted cats a few days ago. They’re called Henry and Joseph and they’re finally starting to feel at home. We found them through a posting on from a woman in the neighborhood who had to give them up because of her son’s asthma(?).

We’ve wanted cats for a while now. After 19 years with WS, Pandora had to be put down last October. We both really miss the companionship. We were out at The Long Room and WS blurted out, “Let’s get those cats!” or something along those lines. It was very similar to when we were out at Nighthawk and he said, “We should get married!” As he has since pointed out, we make our best decisions when a little tipsy.

We’ve been married for a little over five weeks as of this post. It still hasn’t sunk in. Probably because nothing has really changed. I decided quite some time ago that WS and I were forever. Getting married was just a thing we did because we wanted to… make a public declaration, I guess? I don’t know. It’s pretty cool. I haven’t done the paperwork for my name change yet. That will probably make things feel pretty different.

I’m still pursuing the data visualization. In theory. I haven’t done much about it. That’s one of the reasons I’m writing here now. I’m hoping that the desire for content will motivate me. That said, I don’t want the writing itself to become a time sink. So, maybe I’ll stop here. Save something for tomorrow.

A moment from the big day. City Hall.
Behind the Scenes

Happy 2017!!!

Posted on

Happy New Year, Friend!*

Enough people have pointed out what a maddening year 2016 was, so I won’t dwell on that. Instead, I’m focused on the future, and that includes making the effort to stay in touch with you.

For those who don’t know, I left my insurance career a few years ago to go to art school and study animation. It’s been challenging, but it’s a decision I feel good about. Since I finished school, I’ve gone back and forth between trying to make a go at freelance work versus looking for something full time. Recently, things have been looking up on the freelance front, so I’m turning my efforts more in that direction. I learned just enough about a lot of animation topics to make it hard to choose one to focus on, but I’ve finally settled on Data Visualization. It’s in demand, it lets me be creative, and it gives me the opportunity to take advantage of my left brain skills while I’m at it. I also think that, by helping people become better informed, I can do some good in the world. It’s a win all around. Now I just have to hone my skills and build up a portfolio. Challenge accepted.

Outside of work, things are great as well. I’m living on the north side of Chicago with my boyfriend (of three years as of January 2nd) Bill. We were matched up by an algorithm on OK Cupid, so there’s another reason for me to be a fan of data science! Bill’s a musician also a freelancer (web stuff). We spend a lot of time in coffee shops.

When I’m not working or trying to keep holiday catch-up letters from reading like employment cover letters (I give up – I’m just going to go with it), I’m probably knitting. And if you want to see the overlap between knitting and animation, I strongly encourage you to seek out I’ve been working with Anna for a few years now to make her little knitted creatures come to life in short, funny films. It’s highly gratifying work.

I put out a year-end survey recently (again with the data science) to see if I could glean some insights about my social circles. I didn’t get enough responses to build any cool charts, but I learned that my friends tend to be big readers and sci-fi nerds and that they are not immune to the charms of Hamilton. (So good, right?) Next year, I won’t rely on social media to get responses, so email me back if you want to be included and make your opinions known on books, music, and the appropriate number of bottles of mustard per refrigerator.

More importantly, email me back and tell me about your year and about your life and about your plans for the future.


*Friend: Maybe I used to take a class with you and we’ve lost touch. Maybe we met once at a podcasting event and you made an impression on me. Maybe we’re blood related, but I just didn’t have your address to send you a holiday card.

Where else to find me: