Category Archives: Pals

Week 3011

Getting ready for my first trip to Hyderabad!

Health

Been working on dragon flags and handstand pushups at the gym. Only 3 biking days this week :(. On the other hand, they were all good days. It’s cold enough now to break out the gloves here in NYC, so I’m looking forward to warmer days in Hyd for the next few weeks. I wonder if I can rent a bike there easily?

Family

One of the reasons for that: I got to take Max Lazer to go see Tinga Tinga. He got to see it, I just got to be part of the parental escort through the subways to Times Square. He handled it great, but it was amazing to see the way the teachers handle 22 kindergartners getting through the subway system.

Z is teething and it’s so tough on her. I hope it ends soon. On the other hand, I managed to get both kids to sleep in the same room at the same time on Wednesday and Thursday we got Z to sleep the whole night through!

My Kobo broke and I sent it off to be replaced, but I must have an e-reader for the trip so I am now the owner of a Kindle Paperwhite as well. As someone who’s now owned and used a Nook, Kobo and Kindle, I’ll write up my take on it. Should have some time on the 16 hours or so of flight time!

Code

Been helping folks at work learn some more advanced Python. I get excited every time I talk about list or dictionary comprehensions because they were a real light when I was learning python in the beginning.

You often need to transform data structures and the first way is usually to just iterate a list, construct new instances of something else, then pop them into a list of new things.

Say you have a list of cool coders you want to talk about.

 


from collections import namedtuple
Coder = namedtuple('Person', 'name login url')
cool_coders = [Coder(name="Grace Hopper", login="ghopper", url="https://en.wikipedia.org/wiki/Grace_Hopper"),
Coder(name="Ada Lovelace", login="ladyada", url="https://en.wikipedia.org/wiki/Ada_Lovelace"),
Coder(name="Jenn Schiffer", login="jennmoney", url="https://jennmoney.biz/"),
Coder(name="Nina Zharenko", login="nnja", url="https://www.nnja.io/"),
]

intro = "Here's a list of some cool coders and more you can learn about them: "

Maybe you want to produce a markdown sentence listing them.

coder_markup = []
for programmer in cool_coders:
    coder_markup.append( "[{}]({})".format(programmer.name, programmer.url) )
markup = intro + ", ".join(coder_markup)

Sure, that could be more complicated and have more changes or filtering that needs to be done. But what’s nice about a comprehension is that it helps cut down boilerplate and it makes things clearer.

coder_markup2 = ["[{}]({})".format(coder.name, coder.url) for coder in cool_coders]
markup = intro + ", ".join(coder_markup2)

And of course, if we were on python 3.6 we could make that even smaller by just using fstrings.

I’ve been using tmux pretty heavily, but now I get annoyed that on reboot I have to rebuild all of my workspaces. So now I’ve installed tmuxinator. It should be useful for setting up project/workspaces and then firing them up after a reboot.

Of course – I don’t just install tmuxinator. I set it so that it can auto-install on any account I’ve got with my jumpstart script.  If you know any cool tricks or experiences you want to share about either, I’m eager to learn.

 

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 3009

VERY interested in trying to make a MagicMirror.

But I want to see if I can simulate it first before I buy a bunch of stuff to have around the house. So I’m trying to figure out how to emulate a  raspberry pi on Ubuntu and its a bit of a nightmare.

On the other hand I finally figured out how to remote into work on my linux laptop. Just for future reference:

  • downgrade to Citrix Receiver 13.8 – this gets you at least to a point where you just get a certificate error.
  • cd  /opt/Citrix/ICAClient/keystore
  • sudo mv cacerts cacerts.old
  • sudo ln –s /etc/ssl/certs cacerts

This is very stupid, but hey. At least I can remote in now!

I only got in 4 days of biking because I needed to go to a conference with Max Lazer’s teachers. They are working hard to find the best ways to help him.

So this was Thursday’s office:

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.

Code

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.

Bike

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.

Family

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

Work

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

 

 

Politics

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.

Exercise

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

Family

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?

Bike

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!

Work

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.

Code

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.

Reading

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.

Bike

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.

Politics

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!