Finished Works

Day 6: Taking risks with Hakobo

Posted on

Today’s artist is Jakub Stepien, who goes by Hakobo. His look is based on Polish skateboard culture and is influenced by primitive art. Lots of geometry. Lots of dynamic angles. Black and white and limited colors. Busy, jarring, not always super readable, but part of that might be that I’m looking at a language I don’t speak.


Finished Works

Day 4: Get the vote out with cyan

Posted on
Part One: Inspiration

Today’s artist is cyan, out of Berlin. The poster examples in the book made me think of textiles; particularly patchwork quilts. In a good way. One observation they make (that a previous designer made as well) is that, with posters, you have to consider how they look from various distances. I have not taken that as much into account. When I design posters for Nighthawk, I sometimes wouldn’t see my work at a distance until it was hanging on the wall. Stepping back from the laptop screen isn’t an ideal substitute for a test print, but I’ll add it to my process.

Part Two: My Take

With the election on Tuesday (and because my ballot went out in the mail today), I decided to make a get-out-the vote poster. Specifically, something that would direct people to Ballot Ready, a group that is doing great, nonpartisan work to get the vote out. I modeled the poster after the actual ballot, with its unfinished arrows and Arial font.

Red, white and blue seemed like the natural choice for colors, but I wanted to use unexpected versions of them – “inventive color palettes” being one of the cyan signatures. An image search of “red blue palette” brought me to a site called Piktochart, and an example of some cartoonish coffee packaging.

The text content could be a little more impressive, but I’m trying to focus on the design side for now. And on consistently making a thing every day.

Finished Works

Days 2 and 3. I’m counting it.

Posted on

Day 2: François Caspar, Paris, France

Caspar says that his focus is on telling a story in as short a manner as possible. There were many instances of overlapping text, almost to the point of unreadability. Also lots of things made from other things. Very bold colors and use of white space.

I was excited to work in this style, but stuck for a topic until my husband mentioned the Twitch streaming channel he was setting up to stream his music creation process. The image popped into my head instantly and the poster came together very quickly.

Day 3: Fang Chen, Shantou, China

This one was tricky. There wasn’t as much that jumped out to me apart from the fact that all Fang Chen‘s posters are black and white (representing yin and yang). Also, I had a half-formed idea in my head from the improv show I’d seen the night before. I went ahead and explored my idea, working in black and white as a nod to the project.


November Poster Plan

Posted on

As I continue to not find gainful employment through the usual channels, I’m going to start focusing on the longer term. Step one is to get better as an artist. I’ve been making a lot of posters for Nighthawk lately, and that will be my jumping off point. I have New Masters of Poster Design out from the library and my ambitious plan is to focus on one of the thirty artists in the book every day and try to make a poster in the style of that artist.

Day 1: The Killings at Badger’s Drift, inspired by Aesthetic Apparatus

The first designer in the book is Aesthetic Apparatus, out of Minneapolis. They started out with an interest in screen printing and, as of the 2008 publication of the book, worked entirely by hand. They have a vintage inspiration that appeals to me, and specifically mention the Works Progress Administration as an influence.


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!