It’s Hard To Talk to Engineers: A Primer

It’s Hard To Talk to Engineers: A Primer

So it’s been a year working from home now which is something. It’s also Women’s History Month (for not much longer, but here we are). I’m going to talk about something that’s happened to me many a time in honor of March and working from home and all the female engineers I know.

Maybe you know an engineer. This engineer doesn’t necessarily have to be a software engineer, but mechanical, chemical, aeronautical, you name it. Have you ever asked that engineer what she’s been doing at work, how work’s been going, or something to that effect? Or perhaps this engineer has brought up work in a conversation. Maybe you’re just being introduced to this engineer and you’re finding out what she does for a living. The conversation might go like this,

“How’s work been going?”

“Pretty good. I’ve been working on [insert project here].”

“Oh wow, that sounds complicated. Haha you’re smart.”

“. . .thanks? . . .”

Conversation moves to something else.

Another situation you might run across is a very excited engineer wanting to show you a project she’s been working realllllly hard on for a long time.

“Want to see my project I just finished up??”

“Sure.”

“Look! It’s [insert project]!

“Cool!”

“. . .thanks. . .”

Conversation ends.

I get it. It’s hard to come up with conversation for topics you may not be super familiar with. It isn’t just for engineers (I’m guilty of this in conversation too), but this is my wheelhouse and I’m using it as an example.

Now, what might one say instead of the token “cool” responses? I’ve been thinking about this for quite a while and here’s a few to get you started:

  • What’s been the most challenging part of this project?
  • What problem were you trying to solve?
  • How does X work?
  • Which part are you most proud about figuring out how to solve?
  • Did you have to work with teammates on this project? How were they?
  • What would you improve if you had to do it over again?
  • Are there any new concepts/technologies you used?
  • What was the most fun/challenging thing to learn about?

My intention is not to make anyone feel bad, because I know not everyone wants to hear a ton about work stuff all the time. I also know that it’s really hard to have an in-depth conversation with someone about technical information you’re unfamiliar with. (So, how’s all that tension in the metals and bending going, mechanical engineers?) I just hope that it encourages you to ask a follow up question or two the next time you stumble into one of these conversations. You’ll make an engineer feel seen and happy.

More next time!

-Rachel

Musings on Versioning and Poetry

Musings on Versioning and Poetry

Well, it’s almost the end of February, so I thought I’d say hi. There really hasn’t been much that has piqued my interest in the coding realm recently to want to jump in and write about it. However, the other day I came across something where I had to dig into python versioning with poetry. I thought you all would love to hear my thoughts on it. Because why else would you be here? Anyhoo, poetry.

So you know how a project has packages you’re going to use for it and those are your dependencies. And those packages have dependencies and keeping it all straight manually is a thing. So you use poetry to keep track of it all. You have a pyproject.toml file you can define your packages and the versions you need them to be. And then you’ve got your poetry.lock file that keeps track of all the packages and versions and tasty nuggets you have in your project.

My questions were:

  1. Can my poetry.lock file update itself by running poetry update without me having updated my package versions in pyproject.toml?
  2. When do i use poetry install versus poetry update?

What I discovered:

So if you update poetry without updating your pyproject.toml file, it is possible for poetry.lock to update itself. Here is why. It depends on what versions you have defined. So say you have version ^1.2.3 defined for a package and the package version you’re running is 1.2.3. If that package comes out with another patched version, say 1.2.5, your pipfile.lock would update because it falls into the requirements you defined (versions >=1.2.3 and <2.0.0)

The next question is answered in their documentation (shocker, I know. Who would have thought reading the documentation would yield results?) Anyhoo, poetry install installs the versions you have defined in your poetry.lock file and doesn’t do any resolving. Whereas, poetry update resolves the latest dependencies and updates the poetry.lock file. So it’s like running poetry lock (locks your dependencies from pyproject.toml) and then poetry install but doing it with one command.

Overall an interesting topic. Do you use poetry for package dependencies?

More next time!

Rachel

Intentional: Word of the Year 2021 Edition

Intentional: Word of the Year 2021 Edition

Hi hi! So yes, I kind of planned this to be posted a bit earlier, but eh. I didn’t get around to sitting down to write it until now. So last year my word of the year was upgrade, and overall I think that it was a decent choice. For this year, I have been thinking a lot about what word to choose, and decided to go with Intentional. Here’s why.

I can trend towards being unintentional super fast. I just go about my business and do what needs to be done for a baseline, but start ignoring the extra stuff. So for example, going to work and doing my job is my baseline. But then when it comes to the extra (reaching out to people myself, extra reading and learning, putting myself out there in leader-y situations) I can sometimes forget about it. I have to be intentional about remembering to put the extra effort in for that extra nip.

At home it’s the same thing. I can baseline pretty well, but I’m not very intentional about doing what I would consider the “extras” all the time. In my opinion that is not a bad thing either; I can’t be on 100% of the time and doing all the things because I’d get so burned out. However, I want to be intentional about thinking about what extra things actually need to be addressed and then following through with them.

There you go, my word of the year. Do you come up with a word of the year? I think that it’s a bit easier to stick with rather than a resolution, but what do you think?

More next time! I’m thinking of discussing yaml files a bit. They’re something I’ve been looking into more recently and it helps me to wrap my head around something if I have to write about it.

-Rachel

One Year In: A Reflection

One Year In: A Reflection

Hi All!

So, I’ve actually stuck with this blog for a year. Boy, it sure helps when you pay for a domain and don’t want it to go to waste. But really, I’ve enjoyed keeping it up, even if I’m averaging about one post a month. At least I’m consistent, right?

Back in the Days of Yore, the Simpler Times of late November 2019, when I first decided to start this up as a kind-of-side-thing, I had hopes of keeping it up. I initially wanted to post more like once a week rather than once a month, but I was flexible and figured that as long as I’m consistent that I’ll be okay. And I think that’s worked out pretty well for me.

Now, have I been writing about what I thought I’d write about? Kind of. . . ? Not really, though. With starting a new job in late February and then working remotely in mid March up until now, it’s kind of shifted a bit from my initial goal of being more tech heavy to more of reflections of working from home and learning processes. And that’s been okay with me. Here’s my takeaways from the previous year.

Remote Relationships

It’s definitely been a skill to develop working relationships almost purely online (I’m going to count that almost a month of being in person). It was definitely something that I was very suspicious and anxious about starting off. My main takeaway is that you just have to be super super intentional. Intentional with questions, asking for help, initiating chit chat, being intentional with how you show your visible listening cues over online meetings. It’s been a thing, but overall I think a good thing.

Personal relationships have been similar, but we’ve been fortunate to have a pretty good group of pod people to hang out with during this time.

A Slower Pace

This year was not that go go go feeling. Before all the pandemic jolly started, I got frazzled and high strung a lot. I just don’t love being so busy, but it’s kind of what happens when you work full time and have a kid in school and have activities outside of those things. I was so tired all the time. Now there’s a lot of the extra cut out. I do miss aspects of it, but I don’t miss how incredibly exhausted I was all the time. I feel like at work I’ve been just as productive (or more so now that I’ve learned way more of the goings on at work and am no longer a new hire) but without feeling so incredibly wiped. It is just so exhausting to just hit the ground running at 7 am or so and not stop until 9 pm or later. (I know that there are others that have not had this pandemic experience) So being forced to slow down has actually been very good for me and I would like to say my family.

I have also felt like I’ve really been able to enjoy the seasons and weather this year more so than in years past. I was able to walk outside, eat my lunch on the deck, work outside in the nice weather, all things I couldn’t do at the office.

Productivity At Home

I was pretty nervous about how productive I’d be working from home. And honestly, it really hasn’t been bad. I’ve been able to really focus on work for the most part. Of course, there’s been other times where that has not been the case, but it’s definitely not as bad as I thought it would be. I’ve also been able to use my breaks to either do crafting projects or do household chores, so I have definitely doubled up on productivity.

Concluding Thoughts

I like everyone else did not expect 2020 to be a doozy of a year. And I will be the first to admit that overall my family has gotten off pretty easy through this whole thing. While there has been a lot of negative things associated with the year, there have also been a lot of good things too. For every cancelled event, mask drama, election nutsy, killer bees, there is also more time with Brett and Ellie (and Calvin), spending time reading, learning about and making new crafts, and I wouldn’t have that changed.

More next time!

-Rachel

Screen Free Hobbies: You Should Have Them

Screen Free Hobbies: You Should Have Them

Hello, everyone! Hopefully everyone’s fall is faring well. I’ve been working and Ellie’s been learning at school, Brett’s been subbing, and nothing too exciting has been happening. Now if we are to contract our definition of exciting and exclude any truly exciting things (like trips, visits to restaurants, etc) then I do have some exciting news to share!

Okay, so as you all are probably aware, I spend the majority of my day working at the computer. I haven’t figured out how to get VSCode working on a piece of paper. . . yet. . . So in that light I look at screens a lot over the course of a day. When I do have downtime, I think that it’s really important that I incorporate as many non-screen hobbies as possible. If you wind down by doing other screen activities (video games, phone staring, tv watching, etc), I’d encourage you to pick up a hobby that allows you to work with your hands in some way. Based on my experience, here’s why.

Physical Benefits

If I am too computer and phone heavy, I get repetitive stress injuries with my wrist and it’s painful. It’s really helpful for me to incorporate activities throughout the day that don’t involve scrolling or typing. And even when I do those things, I wear a wrist brace.

It gives my eyes a break (I do have blue light filtering lenses which has really helped too).

It helps me with back and neck pain and tension.

Mental Benefits

I’ve been getting back into sewing recently and have really enjoyed it. I’ve made a couple of things for myself (flannel shirt and a skirt) and a dress for Ellie. Being able follow the directions of the sewing pattern and sew a garment is so much fun. It’s like a puzzle and logic sequence where you’re able to have something practical, functional, and pretty that you made yourself. It also paves the way for tons of research into different stitches and methods of sewing, the best types of tools and notions to use for a project, and how garments were sewed historically. I just really enjoy having something non-computer-y to learn about and research.

Of course, reading is also a huge part of this for me. I’ve been into social and fashion history for a few years now and find it fascinating. I love researching how people lived daily back in the days of yore. Being able to think about and mentally explore that and imagining what people did in daily live is just fascinating. And I think that mentally exercising your brain with different types of thinking benefits the other work-y thinkings you’d have to then do for work.

Concluding Thoughts

I really hope that you have a fun non-screen hobby you’re able to enjoy doing. If you do, I’d love to know what it is! If you don’t, what types of things would you want to try?

More next time!

-Rachel

September Pop In: React Tidbits

September Pop In: React Tidbits

Hi All,

Just wanting to say hi while we’re in September. It’s been pretty busy at work and with Ellie being schooled again. ‘Twas the longest spring break ever. . . I’ve been doing a lot of work in React recently , which sometimes feels like, “yes, I’ve got this!” Then I have to deal with modifying state and then it’s all, “NOPE. What the world in the heck is going on??”

Here are a few of my observations with React after muddling around in it a while.

  • Why does wrapping my component in <> and </> magically make it work??
    • Turns out it’s called a React Fragment and it’s for letting you return multiple children without jacking things up. Please see link for less janky explanation.
  • Why is testing it so convoluted?
    • This is probably on me. I’m getting better at some parts of testing React, but it’s still mysterious.
    • It seems like you want to test the workflow rather than if X == Y specifically. So like if you click a button you want to make sure that when you do click it, all the things you want called and done are actually called and done.
    • Mocking is your friend and don’t try to test too much in one component. So if your component is calling a permission checker, only test up to the point where the permission checker is called and that you do call it. Then test the specifics of the permission checker in a new test.
  • State variables are cool, but it’s kind of tricky to debug them.
    • Just go and read about State Hooks. I don’t have a super firm grasp on it yet, so this here is mostly reference for me.

React isn’t really one of the things that I thought I’d be learning, but here we are and while parts of it are fine (I’m better at writing components) other parts are still just tricky to deal with (adding in redux for one). BUT! I’m learning and getting better at it and my goal is to not have to ask questions about the same thing over and over, which I hope I’m accomplishing.

More next time!

-Rachel

The Art of Being Stuck on a Problem

The Art of Being Stuck on a Problem

Hey All! It’s been crickets on here for a bit, but there really hasn’t been a lot of inspiration recently. July has been nice and we were able to go on a bit of a vacation with family which was enjoyable. My work computer has decided to reboot itself and install updates, so here we are.

I’ve been stuck on a problem for a few days now. It’s a frontend problem (React/Redux) which I’m still quite unfamiliar with. All my normal guys I’d go to for asking questions to are on vacation this week. I’ve been poking around and trying to figure it out for the past day or two. I know what I need to do, but am still really unsure as to how I need to go about what I need to do, if that makes sense. Anyhoo, it has gotten me thinking about how I really dislike being stuck on a problem, but also reflecting on what is good about being stuck on something.

Being stuck on a problem forces you to learn more about the problem. I don’t know everything, but I wish I did. Not being able to solve something right away confronts that little tidbit head on, unfortunately. So it leads me on over to the internet to look up documentation and articles. I read and I learn more.

Not having your normal go-to question people around also encourages you to branch out from them and to interact with other people to help you solve your problem. I’ve gotten a chance to chat with a couple of other co-workers with knowledge on the subject matter and it’s been enjoyable. I don’t love branching out because I have my circle-o-friends and that’s just fine for me. But not having them available kind of forces my hand to branch out, and it’s really not bad. (I hope this doesn’t make me sound terrible)

I know I’ll get it solved and will learn more from it. So don’t get discouraged when you aren’t able to solve something right away. It’s good to struggle and think and ask for help. I don’t like admitting to struggling and needing help, but it’s good and allows one to grow and learn more.

Now that we’re on the downward slope of summer, I hope to write a bit more. We’ll see. More next time!

-Rachel

Python Testing: A Philosophy

Python Testing: A Philosophy

It’s been a bit since I’ve been here, but there really haven’t been many updates in regards to new and exciting topics in the working realm for me. One thing that I have wanted to cover is Python Testing. Not necessarily how to do it, but the motivation behind writing good tests. Am I an expert in test writing? No. Have I been learning what makes one test better than another? Yes (hopefully). Here’s a few thoughts I have regarding testing.

Be very explicit with naming your test function. When your tests run you’ll see the names and if they’re all called testX, that’s not super helpful. Try something like test_blue_cat_food_bowl_half_filled_hungry_cat. Or whatever. Even if you don’t love the name I made, you know you’re testing how the blue cat food does with a hungry cat and a half full bowl. Use docstrings to then describe in more detail what data you’re setting up for the test and what you’re calculating and expected results.

# not using decorators or anything here for this illustration
def test_blue_cat_food_bowl_half_filled_hungry_cat():
    """
    Tests that the cat will eat the cat food in the bowl.
    One bowl, blue food, one cat, cat's hunger level is hungry
    """

Have your actual testing test only one idea at a time. Say you also need to test to make sure you have the right breed of cat. Make a separate test for that. Sure you could go ahead and test for it in this test, but that’s not within the scope of your function name. Plus if that part of your code breaks in regards to the cat breed, you’re going to have to update more than just that one test that deals with checking it.

Ensure you’re data is set up correctly. Your test may pass, but you may accidentally have something in your test assuming that you’re always being given a full cat because that’s the default cat setting in your factory or whatever. Make sure that anything you’re testing, you explicitly define the test values so you’re not getting false positives.

Test the small things first and then work up to more complex testing. You may want to just set up your one test that is supposed to test everything is summed and converted correctly and just figure that it will pick up the small things. I’ve found this is not the best way to start off. Writing lots of smaller, specific tests to test out all the smaller building blocks of the larger bits of code that use those blocks has proved to be way more effective. It’s also a plus that if you know all your simple cases work and a more complex test fails, then you can narrow down what is going wrong a bit easier too. Which also goes back to my earlier point that if something breaks then you are able to fix that little bit way easier than in your mega test.

Those are the big things that I have learned are super important with setting up and writing sensible tests. It’s pretty easy to find out how to write a test syntactically, but unless I’m just lazy with my Google searching, it’s a bit more difficult to find good references on what makes a good test. Anyhoo, let me know if you have any other testing wisdom!

-Rachel

Helpful Links for Covid-19 Information and Data

Helpful Links for Covid-19 Information and Data

So it is work from home day whatever. I don’t know, I’ve stopped counting. I thought I would share some links to some resources that I have found helpful with keeping informed data-wise with ol’ Big-Rona. I’ll order them in the amount of information from globally to locally. This will be Illinois specific, but you’ll get the idea if you live in another state and will be able to find corresponding information for whichever place you live in.

These are my go-to links and I hope you find them useful. Are there any other sources of information you find informative? Let me know!

More next time!

-Rachel

Git Rebase VS Git Merge

Git Rebase VS Git Merge

Okay, first off, this isn’t going to be a detailed explanation on the eccentricities of git, git rebase and git merge. If you want, that there’s some internets for you to use. (This explanation is pretty good). It’s going to be my thoughts and experience with them.

Git Merge

I’m most familiar with git merge. You switch from your branch over to master, pull down master, switch back over to your branch, merge master in, fix any conflicts, switch back over to master and merge your branch in. The handy thing about git merge is that what you’ve done on your branch doesn’t get overwritten by master. When you do your merges though, you’re going to get all the revision histories for the branches. So if you’re working with a master branch that has a lot of contributors, then your history is going to look a bit messier.

Git Rebase

Rebasing gives you a cleaner revision history. Everything is pretty and linear and your git log will be prettier too. Super cute and fun. However, you’re going to have not as much fun when it comes to conflicts or someone’s been editing the same files you’ve been editing. I’ve had issues where what I’ve written on my local branch was overwritten and it was such a pain to fix and keep track of everything. You can fix all this, but it’s just more of a hassle to resolve, and I’ve gotten into these seemingly unending loops of resolving conflicts for each commit. You can also rebase more frequently which helps.

So which is better? Neither one is better, they serve their own purposes and they both have uses and how you want to use them is up to you. Any thoughts? What do you use most often?

More next time!

-Rachel