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.



Posted on

Day two of training for my new job. I was frustrated at how slow everything was going and how much explanation everyone else seemed to need. I was able to complete all the sample assignments quickly and without errors. So, after lunch, we had to re-do one of the assignments as a quiz. And, of course, I ended up getting two wrong. One was because something (possibly) hadn’t been shown to me – still, my bad; the other was because I was rushing and being careless. There’s a lesson in here somewhere. We’ll be tested again tomorrow – the test that decides if we move on to the production floor. You bet I learned my lesson and I’ll double-check everything!


Poor People Jobs

Posted on

Today was the first day of the new job. Just training this week. Then, next week I start part-time. That’s so somebody can check my work. Once they’ve determined I can do the job without mistakes, then I can start full-time.

It’s a pretty low paying job and, considering how often there are openings, I’m guessing that the turnover might be kind of high. It’s not just the wage that makes this a poor person job though. The whole structure and attitude is vastly different from the jobs higher up the ladder. The hours are non-negotiable, including lunch. I think even breaks are scheduled. The dress code is very, very specific. It felt like half of today’s training was about the dress code. We haven’t gotten key cards yet, so we need to be let in to the training room and let into the break room. We may need to be let in to the bathrooms too. I’m not sure. There’s Guest WIFI in the break room, but we don’t get access to it. If we get back from break or lunch early, we have to sit off to the side until they let us back into the training room.

None of these things are a big deal but, combined, they send such a negative message. And considering that more than 80% of the people in my group were African American, I think this is one more thing that adds to the racial divide in this country as well as the economic divide. I haven’t had a chance to give it much thought, but I wanted to put something here all the same.


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.

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:

4637 N Spaulding Ave., Apt. 3
Chicago, IL 60625

Works In Progress

External Motivation for the win! (Weather Project, Day 1)

Posted on

I ran across a really appealing job posting today. Among other things, however, it requires a writing sample. My technical writing skills have always been pretty solid, but it’s been some time since I’ve had to write anything. And most of my writing was so full of confidential information that it wouldn’t be of use even if it was current.
I decided that the best way to generate some current, relevant writing is to start a new project. I have lots of ideas I’d like to explore, but I’m going to keep it simple and do a study of the weather.
The idea I’ll be exploring is that Chicago doesn’t have much of a fall and spring. It’s something that we say all the time around here, but how true is it? How much Confirmation Bias is actually at play? I mean, nobody makes this complaint on a seventy degree day.

The first thing I need to do is to find a database. This is all the more reason to start with a weather-related project. There’s plenty of information out there for the taking. NOAA has data at surprising amounts of granularity. That’s where I plan to start.
In the past, I’ve done most of my analysis in spreadsheets, but that’s not going to cut it here. I tried to import just one year of NOAA data into Google Sheets and it wouldn’t even open. It’s time to move on to something real. I’ve done a great deal of SQL training, but I have yet to put it into practice. I’m downloading PostgresSQL and doing a quick training session to learn how it ticks, then I should be able to at least begin my analysis in there.
Beyond the technical aspects of the project, I need to spend some time defining my project. When I say that Chicago doesn’t have Spring and Fall, I’m not talking about the calendar or the position of the sun in the sky. What I’m saying is that it feels like we go directly from cold weather to hot weather and back to cold without many days in between. How am I defining cold? How am I defining hot? These are subjective measures. There are some who consider fifty-five to be downright balmy and others who need a jacket as soon as it drops below seventy.
Once I’ve defined my temperature range, do I count a day as spring- (or fall-) appropriate if the day’s mean temperature is in range? Or do the high and low need to be in that range as well? Is a chilly morning enough to disqualify an otherwise perfect spring day?
Finally, how many good days is enough to feel as though we’ve had our smooth, seasonal transition? Three full months would be the ideal, but that might be a bit inflexible. Is there an acceptable number, or should I be comparing to the seasonal transitions of other cities? Nearby cities? Cities known for their stable, clement weather?
Additionally, even though it’s not directly part of this question, it might be interesting to compare contemporary results to those of 10, 20, or more years ago. Just in case people are nostalgic for the seasons of their youth.
I plan to get my database up and running first, so I can dig into the NOAA databases and see what I have to work with before I finish designing my questions. I’ll keep posting here as I fine tune things.


Let’s try this again.

Posted on

Nothing to quite tempt fate like a post that says I’m back on track. I actually missed posting on Thursday because I was so hard at work on a Mochimochi Land project. There was some unclear communication about how polished of a storyboard we were sending to the client, and it led to lots of iteration. That, and some After Effects errors that I still haven’t tracked down. (I was able to come up with a work-around.) I should have written about it Friday morning. Instead, I goofed off in the morning and then had to finish Mochimochi stuff in the afternoon.
I still don’t know about the job, by tthe way. They’re interviewing other candidates, so I guess it depends on whether or not they can find someone sufficiently competent and more devoted. I should know by the end of this week. If I get it, I realize that I’ll have to put a lot of things on hold for a few years. I can work on database and graph stuff in my spare time, because that’s relevant to work. I can probably do a little sketching on my lunch breaks too, but I don’t see myself having time for any larger projects. Is it worth it? Time will tell.
I’m drafting this post on a site called It’s a place designed for regular, stream of consciousness writing. I’ve used it in the past, but I’ve fallen out of the habit. I’m hoping that it will improve the content of my posts. So far, they’ve just been play-by-play of my day. Not the most exciting content. I’m new to this, though. And, fortunately, I have no readers. (If you’re reading this now, it’s probably not July 2016 anymore.)
I’ve heard “You don’t write because you have something to say. You write to find out what you have to say.” If this is true, look forward to more interesting posts as I figure out what I have to say.