Tag Archives: weeknotes

Week 3010

Another combo because I’m late!

Here’s the The Owl from I Love You but I’ve Chosen Darkness

It’s rainy and dark and suddenly fall.

More riding in the rain.  Had to skip a day because I felt horrrrrible after the happy hour Wednesday night.

Sleeping poorly is the rule in our house as we struggle to figure out how to get Max Lazer and Queen Z to bed in the same room at a reasonable hour. It takes forever.  We think some of Max’s trouble in kindergarten is that he just can’t get good sleep at home anymore. So he goes in tired and can’t be his best.

I’ve got my visa for the Hyderabad Trip coming up and while I’m excited to go visit India I think my first trip will be almost entirely business – there’s a DR test that weekend so I’ll probably spend the whole trip in just the one city.

Going to our building’s yearly meeting for the first time in a while as NOT a board member. WOO!

Got to work on competitor pricing and take friends out to lunch to discuss. Also got to spend time with our R&D project plans for 2019.



Week 3008

Welp, I’m getting this in a bit late, so I’ll also put in some Music Monday.

But since the world is a pit, you get Cotton Eye Joe Gregorian Chant Nightcore Hardcore Dubstep remix. Do better this week, world! The Senate confirmation hearings for Brett Kavanaugh were a reminder of how little women’s pain matters. The guy is also clearly lying.


My team won one of the 2nd place slots in the Hackathon as “Most Complete Hack”! We are talking about bringing it through to complete prod deployment.

Read up on Conflict Free Replicated Data Types which are a really interesting way to do mergable data structures. Underlies lots of interesting stuff like Redis.

Experimented with Mozilla’s Configman – the docs are NOT good enough, because they actually have a great drop in replacement for the standard ArgumentParser in there.


Got in all but 1 day last week. Rode in the rain 2 days! The first convinced me that I need to either own rainproof pants or just plan on riding in shorts in the rain. I bought a pair of Showers Pass transit pants and they worked great on Friday. Also got to randomly ride in with my buddy Lance again and reminded how nice that is.


Zeebus is really smart and understands a lot of what we say! She picks things up and puts them where you ask, she understands that we need sleep, she’s got a lot going on upstairs.

She puts on Max’s bike helmet to let us know she wants to go riding!

When she slapped Sam hard in the face she realized she had hurt her- then Z gave her a big hug and patted her. That’s what Max does when he plays too rough with her!

Max and I did a really good hike together. We went a little crazy and climbed up next to a little waterfall and did some semi-safe bouldering nearby.  Max and I actually climbed way up a small cliff and got to the top. We also found a cool Puffball mushroom. But we didn’t eat it because we didn’t know how to tell if it was poisonous or not. (now we know and we’ll eat it next time!)

Week 3007

I’m writing this one bushed after 24 hours at the company hackathon. Most of our developers are in HYD, so our hackathon starts at 10:30pm Friday and ends 10:30pm Saturday.

Right now we are all done with our deck, the app is finished, we’ve polished everything we can and we don’t want to touch anything in case we break it. So it’s a strange calm.

Another 60 miles on the bike this week and feeling fine. In the gym, we’re working on handstands. Zelda is growing smarter every day, Max suddenly started saying his “R”s like an American instead of a Brit.

I gave Sam a day to travel to Coney Island with Jeremy Fox on friday while I watched Z. Only fair because I’m spending 24 hours away from them.

Speaking of Jeremy, we got to go out and drink and play nerd games and it was SO MUCH FUN. Got to introduce him to another friend who’s out in LA, Dewitt. Hope they actually meet up and hit it off.

Week 3006


We are  having a hackathon! I’m excited.  Its my first since Music Hack Day NYC. We’re going to try out Amazon Lex, Lambda, and some containers.

Some folks are already using my code for working with ELK, so that’s nice.

I’ve been focusing around automating my testing and such, and I really am centering around just learning to write better makefiles. Make is installed everywhere, like vim and other things I like. It just works. And makefiles do almost everything you want. The downside is that it is an ugly syntax. The upside is that if you learn one ugly syntax, you don’t need to learn everything about Rake, Yarn, etc.

Around the web

Best Practices for Staging Environments – this article by the excellent Alice Goldfuss came up at work as we wrestle with big calcs and datasets for our clients.

Why you hate Contemporary Architecture – This is grrrreat. One little note for the computer nerds. If you’ve heard of the Gang of 4 Design Patterns book, read the article and come back. The Design Patterns book was based in part on Christopher Alexander’s “A Pattern Language” which is a great guide to things that seem to work in architecture.

I discovered two things that similar to a POC I was working on (voracious-etl)

  • Datasette provides a readonly JSON api for any SQLite DB.
  • Dataset provides an ORM for any CSV or JSON file

The plugin system at the core of pytest is a library: Pluggy. I like that and I might use it earlier.

A good podcast: Flash Forward. Explores a new future every week. The most recent focuses on fungal enslavement, which I love. If you like that one, I highly recommend the mindblowing Parasite Rex by Carl Zimmer or Sensation by Nick Mamatas




None of the big progressive candidates made it in the democratic primaries. Cuomo still won. Tish won, which is OK. However, I see that  some progressive candidates made it through.

I hope they can do some real work and win in November. I’ll be calling and doing work to support them.  I long for a day when I can start moaning about free speech vs hate speech and trying to reign in some liberal excesses. However, right now, the work has to get done.

I also note that children are still in cages and parents are getting deported without hearings, but it isn’t in the headlines anymore. I’m still pissed about it. I’m still pissed that the probable governor of NY seems to only work for progressive issues when pushed and won’t use his clemency powers.


I biked around 37 miles this week! Had to take off Monday and Tuesday due to rain and being pretty sick. But otherwise, I rode in. Got to stop on Christie street and help a guy who’d been knocked down by a cab.

Worked to a slightly lower pistol squat and my butt hurts sooo bad. Also, my dragon flag work is getting better. I can kind of hold it.

I started doing partial handstand pushups against the wall and they feel pretty good. I can do 5 at a time part way down and up. Next I’ll try lower and lower, then try freestanding ones.


Week 3005


First day of Kindergarten for Max Lazer! It didn’t go great.

Even though we had sent over emails with his IEP, the teachers hadn’t read the documentation for the first day of school. They are very nice, but it was a tough transition day for him. After you drop off kids, all the parents get herded out to the auditorium to get welcomed to the school. I saw his teacher later coming down the aisle to talk to an assistant principal and I knew it was going to be for us. It was. I ended up working from the hallway after calming things down in the classroom. By the end of the day, everything was fine, but what a start. Second and third days were better. I don’t see him participating much yet, so I’m worried that he won’t be getting what he needs.

A young iggy peck makes buildings

These are great buildings – but the rest of the kids are writing things.

I believe he is learning and exploring and thinking, but I’m also worried that he’s dominating the teachers. Do they have the bandwidth to deal with his will and the other children?


Not much biking! Not because I got hit by a car last week, because it was the first day of kindergarten for Max and there was labor day off of work. Only 24 miles this week.

Z-Ray is now trying to teach herself to ride a scooter. SLOW DOWN GIRL. You just learned how to walk!


Still adjusting from my default setting of an internal technology advocate for clients to a relationship manager. My job isn’t just to make clients happy, it’s to help them understand and prioritize what they want. I’m a few months in and still navigating where is support vs building.  It’s a lot different from being an internal technology team and I often have to adjust my headspace.

Also, I internally released a little tool for working with ELK searches directly in Python. I’ll work on seeing if we can accelerate our open source program so that I can release it out in the world.

I’m also now part of the group leading some changes in how we handle our python stack and our api libraries, a subject very dear to my nerdy heart.


Week 3004

Z-Ray is walking like crazy now. Her tiny feet are hilarious and she now just toddles everywhere. This morning she just ran into a room and hugged me.  She brought me my shoes!  She definitely understands when I ask her to put her shoes into the shoe bench.

I love her so much I want to squeeze her for hours.

Max Lazer is going to kindergarten next week! He’s not excited yet, but I think he’ll love it. Just got a call that his ear is large and swollen, but hopefully he’s ok. We’ve been reading a lot of choose your own adventure – I like that he’s seeing how different choices control consequences. When Z cries, he’s very loving and helpful and is doing his best to comfort her or distract her.


I’m thinking about how we will enhance our python support at work. As part of that I’m researching better ways to standardize configuration of objects.  You want to be able to initialize an object foo from a class Foo.

class Foo(object):
    def __init__(bar='baz')
        self.bar = bar
foo = Foo()

print(f"bar = {foo.bar}")
# "bar = baz"

Swell!  But some people may think that bar should be set to “bazzz”.

foo2 = Foo(bar='bazzz')
print(f"bar = {foo2.bar}")
# "bar = bazzz"

Easy enough. But what if I work in a place where we need to change hundreds of uses of bar among tons of different scripts and applications and whatnot?

I may want to get it from an environment variable automatically on startup. Or maybe I work in a place where we like configuring things with a .env file. Or a settings.toml.

Or maybe we want to just this once pass it in as a commandline parameter. Flexibility is really good to have.

Ideally, we can say there’s a hierarchy.

  1. A parameter passed into the constructor is the highest priority.
  2. An environment variable is the next.
  3. A config file is the next most concrete. (I could be convinced to switch these, but as long as there’s a consistent pattern, it’s good enough)
  4. The default value of the parameter in a constructor if there’s not other choice.

There are lots of good libraries out there for achieving this, at least partially. Ideally, I think I’d want to have either something we can apply as a class decorator or as through multiple inheritance.

Some good python configuration libraries I came across that I really like:

For my problem with dreamhost, I’m making progress and have been able to get a set of forward rules pretty much ready. I’m hoping to publish it pretty soon.

I don’t think I’ll get around to auto fixing the mailbox filter rules though.


I got my Kobo back after it fizzled. I’ve missed having an e-reader so much! I did get to read “The Moon is Down” by Steinbeck because we had a paperback on our shelves, but it’s so nice to be able to read a book in bed or in the bath or in the dark while a kid settles down. It’s also nice to be able to just squeeze in A Road to Common Lisp in between things because of the integration with Pocket.


Only 50 miles this week. I skipped a day because there were some team drinks on Tuesday.

I also was gently hit by a car. An Uber driver pulled into the bike lane while I was riding to drop off his passenger. As it was happening I was pounding on his window and yelling stop. I was powerless, a thing I’ve known intellectually but I never really believe. He didn’t stop, he knocked me over. I ran up to his window and explained that I am a person, that people die this way and that my children want to see me. I’m fine. Scrapes and bruises and a tendency to replay it in my head.

It spurred me to donate to Transportation Alternatives. They advocate for better laws, for protected bike lanes that don’t get used as parking spaces. For bike lanes that aren’t truck unloading zones. Things that can really save my life and help me get home.

I also finally replaced my speaker.  It’s louder, but I’m not sure how awesome.  It’s designed with push buttons instead of a volume dial, it fucking talks to you instead of doing things and it isn’t clear what it’s doing. Physical interfaces are SO MUCH BETTER than this. On the other hand, it is louder and my old one was broken.


A good thing you can do about weeknotes is talk about what is going on in the world so you can notice slow changes and not think things were always the way they are.

The government has started confiscating passports from US Citizens who are Latino. There are a very small number of cases where some midwives fraudulently filled out birth certificates. This is the pretext that a racist administration is using to attack Hispanics. Midwife births are more common for those who cannot afford hospitals or who live in areas that are too poor to support a hospital. This is not a thing that started under the current administration – but the character of what is happening has changed.

I am renewed in my determination to work continuously to replace these terrible people with less terrible people. I would love to do that with you! If you wonder what you would do in a time of crisis, the answer is that it is what you are doing right now.

Boob sweat

My buddy Dawn Hunter is smart and charming as hell. She is working on a startup that helps with sweaty ta-tas. I’m no expert, but for people that have boobs and want more comfort with them, she’s writing tips on managing boob sweat and gathering interest from people who might want a product. Get in touch with her!

Week 3003

Things are a bit calmer this week.


Got through delivering a few projects and now I’m talking with my folks about getting a team into the annual Hackathon – maybe doing a chatbot.

Also talking about ways we can get better and faster at responding when things go wrong and how we can not fail at support. Pushing our goals a bit there.

Also in talks about visiting our remote teams, working from India with them for a bit.

Nerd stuff

As part of getting things working in tmux, I thought it would be nice to not only have test scripts running using entr, but to also see what’s going on with the machine I’m running, maybe in a corner pane. I installed python glances and I realllllly like it! It adapts really well to different resolutions.

a gif of python glances on ubuntu


Another full 5 days of bike commuting! Another 60 miles!

I had to get my brakes fixed – and City Bicycles was super nice. Charlie works the front desk looking like a super nice tiny Slash and we lost track of time talking about riding and music and New York.

Slash from gnr
This guy fixed my bike but smaller and skinnier and nicer.


A photo from Mark Rippetoe's Starting Strength showing bad squat form captioned "Don't do this, you fool."
My brain, right before I do this.

I’ve been working on a dragon flag. Negative isn’t looking too shabby! Christina took a video:


Max Lazer is being super creative. He’s been designing little video game maps on paper full of traps and zombies and bombs and portals. We get pens and work out how to get to our destination and win. It’s tiring and awesome and I love him.

Zelda is all kinds of tempermental! She’s gotta be teething. It’s lots of crying and cuddling and wah wah. On the other hand, she’s really playful and mischievous and working hard on her walking. She just gets up and stomps around a bit – but she really wants you to hold her hand.

Also, the biggest joy is seeing them play with each other.

On the web

I’m constantly thinking about quitting twitter. I quit facebook and have felt great about it. I hate that twitter is so welcoming to racists and awful people. I really like the non-awful people on it. If @jack is so welcoming to white supremacists I don’t want to be part of his business.

On the other hand, I like finding gems from Robin Sloan:

And I discovered Naomi Wu who made me think in much broader ways about western takes on feminism and maker culture biases and @xlnbwho got me thinking even more about my unconscious biases and on and on and all the smart good folks are so good.

As Carly Leinheiser put it, these places are hard to shift from. It’s that shitty bar you go to because your friends are there. And now that my friends aren’t at Floyd, I don’t go there.  I’m probably going to give Mastadon a go for a bit, but maybe I’ll just go back to emailing and blogging here and sign up for NewsBlur which looks like the greatest thing since google reader.



Week 3002

Vacation thinking

I’m almost into my first 90 days at the new job. I want to think about vacation. Sam and I have discovered the miracle of separate vacations. We like traveling together, but going with little kids is super hard. You don’t really recharge and a 1 year old doesn’t get much out of it either.

So in between jobs, I went on a “Broatia” trip of 3 dads together romping through Croatia. It was amazing. I was so relaxed to just not be responsible for 3 people. We could drink and carouse and hike and we all had so much energy because we just didn’t have the weight of our (loved) children.  I came back super refreshed from mountain biking, kayaking to islands, swimming in sub tunnels, hiking, jumping off cliffs, etc.

And when I was back I watched the kids for a week while Sam went off to Barcelona with friends from London. Sometimes it’s even easier to be a single parent – you just know it’s all on you and you get it all done without having to consult anyone!

So we are going to do that again. She’s figuring out what she’s going to do and I need to think about where I’ll go and what adventure to go on.


Friends! This is a good thing to reach out to me on. Let’s buddy up and do a thing! I miss you – let’s have an adventure. Snowboarding? Exploring a country? Volunteering somewhere? What would you do with up to a week of Matt?

Nerd Stuff


After my beloved Terminator died in my linux environment at work, I finally gave in and started using tmux. And of course, it’s better. All the old stuff that has survived is really good. Sure, I lost an hour mucking around with configuration and learning how to make it do the basics – but no more than that.

As an elderly nerd, I no longer spend days tweaking my environment and giving myself more cruft to maintain. I look for stuff made by other nerds and adapt it so I’m using their energy. In this case I just cloned a configuration called “Oh My Tmux!” and voila. Things are sweet and well configured now.

In tmux, I now use ctrl-shift-c and ctrl-shift-v to copy and paste.

Jumpstart a linux box

I have a little intel nuc at home that I’ve been trying to use as a mini server to convert video and do little tasks at home, but I rarely log in. For some reason, Sunday night I logged in to see if I could make a restore point and I ended up unable to log into the box, and applying updates to my router and damn near unable to do anything with that. So now I want to make sure I can flash the damn thing back to a usable state easier.

The box is dead! So if I bring it back I’m tired of going through and re-installing things on a linux box. I made a little script to jumpstart getting a linux environment working since I’m working in linux at home and at work.

Monetizing Machine Learning

While I was on a break from work, I spent some time helping Manuel Amunategui by doing a technical review for his book Monetizing Machine Learning.

Book should be out next month, I really enjoyed helping on it and I learned alot about actually using Machine Learning models. I feel like I started to actually get a handle on Bayesian predictions that I never understood before. I’ll put up a link when it goes on sale. I’ve already been paid for my technical review, I don’t get a commission.

Bike Stuff

Biked in the rain on Monday/Tuesday and used lunch time to install some silly wheel lights! If I had a car I’d be so atrocious and tacky.

This was a big week! I rode to work every day this week, even when I had things to do or it was rainy, etc. I just made it happen. Clocked up 60 miles this week! That brings me up to 237 miles so far this year.  My legs are feeling stronger and it is easier to go faster longer. The Manhattan Bridge is still a sonuvabitch, but I have started doing the downhill with my legs crossed or just standing on 1 pedal and a hand on the seat and the handlebars. Stuntin!

Z-Ray walks!

Week 3001


I managed to bring down a server at work while trying to do some experiments with multiprocessing. I also found that chunking out the data, starting a process and getting the data back all seemed to add up to a bigger time cost per chunk than the multiprocessing saved. This is using multiple workers to handle tax lot processing. When I can find time I’ll see if I can whittle it down more, but that was a very surprising note – if you don’t have a big chunk to process for each worker the coordination can be a bigger transaction cost. Just more times I see applications of the Ronald Coase’s work.

Caught up with some folks from  old workplaces and got lots of juicy gossip. What do you do when your workplace is being chaotic? Keeping your head down and getting things done always gets better results than conniving and rumor mongering. Still – chaos at work is distracting. Everyone wants to meet up at the coffee machine to talk about the latest development.

One thing that I’ve never really seen work well is Power Moves. Supposedly some people can do them, but I usually see them backfire. People don’t like being pushed, and they push back. Generally, people do like being led – it’s nice to know what direction we are moving in and to move together.

In general, I find that you can push and fight, but if you find yourself fighting, you have to question if you need to be in the fight. I do the best when I look at my employers as equals – I try to be a good bang for the buck they pay me. If I generally agree with the direction we are going I play my position, help out where I can and move us forward. If they don’t want what I’m selling or want me to do something I find repugnant – I go work with someone else. It isn’t worth it to fight when there’s such a big market out there. My job isn’t to make massive efforts to change the minds of the folks making decisions. They need to earn me as much as I need to earn them. Anything else and you aren’t in a good relationship.

I was also reminded of a good pattern for announcing changes at work. When you make any change, don’t send an email telling a group of people about the change. Instead, make it your practice to update the internal wiki docs and then send a link to the doc with the updates and maybe a summary. That way you don’t let the internal docs get out of date! People will rarely read your release email, but they’ll go to the docs when they are trying to get something done. Keep the docs up to date so they don’t give up and go to your support folks first. It’s a savings for everyone!

I’m also trying to get more of a culture around code review on my team. We’re all advanced tech folks and very good at what we do. But I think it’s always important to review together as a team. “Code should be written by a team and look like it was written by a single individual.” Code reviews are a tiny transaction cost (COASE AGAIN!) but they are a big review. I fully endorse my friend Nina’s talk on How to grow a Code Review culture and their benefits.


I find I am missing the people I care about that live far away a lot this week. I think my zillionaire dream would be to put all my favorite people as close together as possible. I’d live with them and play with them. But I also know they need their people. So my dream ends up a dense metropolis of cool folks – an NYC of my tribe. But many people in my tribe don’t want to live in a metropolis. Portals would be helpful.

Took Max Lazer into the Take Your Kids to Work day this week and it was great. He didn’t always participate, but I think I coulda told them more about helping him with transitions. Otherwise he was really interested in building robots and playing at work with Dad.


All of my work on performance improvements reminds me that we are just trying to get computing to resemble what we see in real life: instant feedback.

We do that naturally with physical things, and I like to see examples of physical computing. Why isn’t everything like this?

Physical computing is Super Different. Immediate feedback matters.

I guess this is one of the reasons I really like Jupyter Lab, and I’m writing a solution to my problems with DreamHost in a Jupyter Lab notebook. More details as soon as I have something. Which better be before October!

I installed the latest ubunto on a Lenovo Yoga 920 and it’s friggin awesome. Highly recommend, very easy. I can segregate work stuff fully from home stuff.

Also, on my reading list: A whole magazine issue dedicated to documentation in tech world.

I managed 49 miles this week on the bike! Commuted every day but Take Your Kid to Work day. I’m proud of it. Definitely more proud than I am of bringing down a server.

Week 3000

Still adjusting to working with offshore developers. There definitely is a pattern of setting up a request, expecting it to be all done in the morning, and having to answer a few questions or concerns the next morning. If you don’t get to those questions immediately, you miss another day cycle.

Speaking of cycling – I took a day off of biking to work on Monday. Tuesday I went again and hit tons of personal bests! I’ve given in and started using Strava and it’s interesting to see how there is a an actual trend of improvement. For example, here’s my times on the Manhattan Bridge.

It is cheesy, but all these personal records and gold medals against myself are very rewarding.

Another takeaway: maybe rested legs are stronger!  Due to rain and hangovers, I’ve only done 24 miles this week . Hope for more next week!

Also at work, we’ve whipped up some backpacks for kids that can’t afford school supplies.

I did some virtual phone banking at lunch on Thursday and Friday for Danny O’Connor. Mostly leaving messages, but every bit helps. There’s a special election on Tuesday in Ohio and I want to make sure I do what I can for it. I invite you to join me – these things are easy, they don’t take time and they make a  difference.

On twitter, I really like the #InvisibleNetworks tag. @ctrlcreep is running 30 days of story prompts and people are replying with weird imaginative little stories.

Max is writing a book. He’s done 2 chapters about a bunch of robots in space. Cute Bun, AVX and their pals are all fighting and using lasers and it’s awesome.

Zelda is still working on her walking. 3 or 4 steps at a time now.

This week I got to dig in a bit on some performance profiling.

While doing some performance testing I found I needed to put in a bunch of temp log statements, but ugh… So I just created a decorator that will log the docstring of any python function and voila!

It’s hard to know exactly where your performance hits happen – so Robert Kern’s line_profiler is a great help.

I set up a terminator session with a few open terminals (different terminals allow you to take advantage of multiple processes and cpus). Then I used entr in each one to run profilers and timers and linters on the scripts.

ls *.py | entr -cs 'kernprof -l ProfileDriver.py ; python -m line_profiler ProfileDriver.py.lprof

This tells entr that whenever any python file changes

  1. clear the screen “-c”
  2. profile the code: “kernprof -l ProfileDriver.py;”
  3. then display the saved profile of the code: “python -m line_profiler ProfileDriver.py.lprof’

In other terminals I put in

ls *.py | entr -cs 'flake8 *.py'
ls *.py | entr -cs 'pylint *.py'

This way I keep my code clean – with a dash of autopep8 -a -a -i  to solve the easiest pep8 errors automatically. It’s also really something how much easier it is to reason about the code as I break it down into smaller chunks.

I’ve installed PyCharm in the linux workspace, and it is definitely a step up. Comes with vim emulation built in and it’s got some nice refactoring tools.