One Easy Way to Not Get the Pay Raise You Want

3 min read

I sat in Carl’s office. Nervous. I was working up to why I’d asked for the meeting through my mastery of small talk at the time (I wish!).

I’d decided that my last pay raise wasn’t enough and felt I deserved and needed more. It was time to ask. I’d never needed to do that before (and thankfully, I’ve only needed to have a similar conversation a few times over my career).

I’d been on the Cadence team for 6-9 months and was starting to get an itch for something different (more about that next time!). I had some confidence I was still excelling although it wasn’t because I was getting that feedback directly from my TL. That just wasn’t how he managed unfortunately. All I had to go on was my output: be it speed, quality, ideas, successes, challenges, etc.

In the days before the meeting with Carl, I worked myself into a nervous frenzy. I had a mental flow chart constructed of like 30 thousand different ways the conversation could go as soon as I made my request.

”I’d like to get a raise

[INSERT DRAMATIC PAUSE]

for no less than $$$…”

SERIOUSLY. I said that. “No less than …”

It doesn’t matter how much the request was for as I had established the rock bottom amount!

While I’d mentally prepared a low-end number that I was going to negotiate with if he outright refused (as I was prepared to declare that I would probably leave), I had never intended to say it out-loud except in flow chart branch #2102, “low-end-salary-requirement.”

And here I was giving away that number right away!

I tried to back-peddle a bit and provide a broader range, but it fell flat. There was no escaping the $ amount I’d already said.

Chit chat ended. I left, dejected, but a bit hopeful he’d see past that number and offer more.

Don’t do this. Ever. You may think it’s obvious. It was even to me! My nervous brain decided to give out all the facts right away.

Epic pays monthly for salaried staff, and the next pay period was only a week or so away.

I looked for my paycheck in my mailbox a LOT on payday. Finally, it appeared.

Cautiously, I opened the envelope to look at the check and pay stub. I could see that the check amount was larger, but given taxes, I didn’t have the math worked out without looking at the stub.

A Giant Slice of Humble Pie

A few days later, I was again in Carl’s office. My pay had increased by the exact minimum I’d asked for.

This time though, things were different. I was ready and I’d decided that I wasn’t going to negotiate like I’d tried earlier. I told him I’d messed up.

”I need $$$.”

The amount was twice what I’d just gotten.

Carl responded that he’d check with Judy, but didn’t see any reason that he couldn’t make it work. I got an extra check that month to make up the difference. That was a nice touch I admit.

While the humble pie was bitter and nasty, I learned a negotiating skill!

Have you done something like this? Or am I completely alone on this?

Hi! Before you go...🙏

I really appreciate you stopping by and reading my blog!

You might not know that each Epic blog post takes me several hours to write and edit.

If you could help me by using my Amazon affiliate links, it would further encourage me to write these stories for you (and help justify the time spent). As always, the links don't add cost to the purchase you're making, I'll just get a little something from Amazon as a thanks.

I'll occasionally write a blog post with a recommendation and I've also added a page dedicated to some of my more well-liked things. While you can buy something I've recommended, you can also just jump to Amazon and make a purchase. Thanks again!

My Favorite Screwdriver

2 min read

When I need a screwdriver for a project of length that exceeds a few twists, I will absolutely go get this screwdriver, every time. Even when I know it’s stored in a small bag/kit I use for tool transport in the basement several floors away, I get it. It makes me that happy to use.

The model (and name) number don’t roll off the tongue: Wera - 5051025001 KK 26 7-In-1 Bitholding Screwdriver, but that doesn’t matter. It’s just my Wera screwdriver.

Wera Screwdriver

Why I like it:

  • It feels great in my hands. It has some texture and not just a flat rounded shape.
  • It can be in a compact or expanded mode.
  • The bits that are included are generally what I need around the house. They’re extremely durable and I’ve not experienced any degradation of the metal material like I have with a lot of cheap bits. They’re sharp and precise (where needed).
  • The “head” of the screwdriver spins so you can maintain a firm grip near the screw while still spinning the driver freely with another hand.
  • The bits firmly snap in and snap out. They don’t fall out on their own and I don’t have any issues inserting or swapping a bit.
  • The bits all fit inside of the screwdriver when not in use (less to loose). I have several screwdrivers that have extra bits, but it seems that many of them require one bit to always be at the ready. I assure you — it’s rarely the one I need.

While I wouldn’t buy it because of the included carrying case and don’t feel it’s necessary, I’m not ashamed to admit that I put it back in the case when I’m done. It needs a nap occasionally after hard use and it’s a great place for it to rest (and to prevent unnecessary wear and tear in my tool bag).

Wera Screwdriver-Open

Because my needs occasionally stray beyond the included bits, I bought the BC-30 Universal Rapidaptor set as well. It includes not only 29 extra bits, but it can improve many ordinary screwdrivers that have replaceable bits.

Wera Screwdriver-Extras

I do have a bit of screwdriver envy though as I’d like to try the ratchet version: Kraftform Kompakt. I 🥰 ratcheting screwdrivers as well (but don’t have a favorite that has warmed me over yet).

If you buy something from a link, Acorn Talk may earn a commission. See my Affiliate Programs statement.

You won't believe what color they selected ...!

4 min read

Of the numbered choices below, which color combination was used as the “read-only” data entry field in EpicCare Ambulatory/Legacy?

Select the color combination you think was used

The background color of most of the UI was “battleship gray” as shown above.

You may remember from my post The App is Too Fast!, that Visual Basic 3 (and Windows 3.11) had a very limited color palette. Even as I created that sample application in Visual Basic 3 for this post, I was again surprised how few colors we had to choose from!

In any case, I’m waiting for your answer.

Come on. Stop trying to skim ahead to see the answer before you pick.

It’s definitely not #14. As the background color is a dithered orange, there wasn’t a reasonable color combination that worked well for showing text on it correctly (as you can see from the screen shot).

Have you guessed?

There were very few (if any) design guidelines for how a graphical user interface should LOOK back then.

OK, alright. It was #3. A yellow background and black text.

It was Yellow!

I never heard a concrete and well-reasoned explanation for the choice of yellow. What this meant was that if there were fields/inputs on a form that were not currently available due to configuration or selections made by the user, instead of a typical white background, the input background would be yellow.

On a screen like EpicCare Ambulatory Order Entry back then, where 95% of all the fields that might be used by any combination of an order (labs, prescriptions, tests) were placed, many of the fields would be shown as yellow at any given time.

”White means work.” —Nurse from Kaiser Permanente NW

During a few day site visit to Kaiser Permanente NW (many years before the big sale to Kaiser Permanente National), I and a few other developers were following a nurse around during her shift. She had just walked up to a shared terminal and started to place an order. That’s when she said that.

”White means work.”

What was interesting about that was that she had just landed on one of the most complex screens in all of EpicCare Ambulatory at the time. It was a chaotic orchestration of labels and inputs and list boxes, and tables and … literally everything seemed like it was on this form. Imagine the drawer we all seem to have, the one with every miscellaneous thing in it to handle nearly anything that life throws at us.

That drawer was Order Entry back then. If you could find it all, you could finish the task.

As she moved through the necessary selections of the particular order she was placing, the seemingly endless fields on the screen changed to “white” and that’s when she uttered that amazingly memorable phrase.

She was disappointed by how much of the screen was going to require active input and energy from her. When we asked for specifics, she mentioned how the “old way” was faster because there was far less tedious fill-in-the-blank to make the computer happy.

Her complaint wasn’t about the yellow — it was about the fact that this modern system frustrated her and signaled that she’d need to do extra work to satisfy the computer.

Is the work that the customer is doing for your software or for them?

Think about that as you create your next app or workflow. Please.

The Yellow Rectangle Road …

During our initial Cadence GUI design sessions, we avoided the “yellow” backgrounds for read-only fields. While it was a departure from the established style of EpicCare, the users of these applications would have zero cross-over at that time. We picked #10. There was some internal moaning, but we held fast.

”Hold the grays!”

I know there were limited color choices, but for me and the way I’m wired, bright yellow rectangles drew my attention unnecessarily when these should have been no more prominent than the white text input fields. In fact, I see them first as I suspect is the case with many others.

The yellow background remained part of EpicCare for more than a few years. Thankfully, it didn’t continue through the EpicDesktop/Hyperspace transition.

What color would you have picked (given the choices above)?

Compiling a Tree Sitter Grammar to WASM

2 min read

If you want to compile a Tree Sitter grammar to WASM, you might find this Docker Build/BuildKit example helpful. I didn’t want to set up all these tools directly on my machine, so this provides a helpful one long step to isolating the build and tools, and at the end, saves the created WASM file in the directory from where you launched the build (you can change the location by adjusting the output argument).

You can use build arguments or change the file directly.

Replace the TREE_SITTER_GRAMMAR_GIT_URL with the git URL where the grammar is located. For example, it might be:

ARG TREE_SITTER_GRAMMAR_GIT_URL=https://github.com/dhcmrlchtdj/tree-sitter-sqlite

Replace the TREE_SITTER_NAME with the destination directory name that is used for the clone. For example using the repository name from above, it would be tree-sitter-sqlite.

Then, from the folder where you’ve saved the Dockerfile:

cmd
docker buildx build -t tree_sitter_sqlite_wasm  --output . .

After a lengthy download and build process, you’ll end up with a file called:

${TREE_SITTER_NAME}.wasm

For example, it might be:

tree-sitter-sqlite.wasm

Hope this helps!

docker
# docker buildx build -t tree_sitter_sqlite_wasm  --output . .
FROM rust:latest AS tree-sitter

ARG NODE_VERSION=20
ARG TREE_SITTER_GRAMMAR_GIT_URL=https://github.com/🤓.git
ARG TREE_SITTER_NAME=🤓

WORKDIR /tree-sitter
# Remove imagemagick due to https://security-tracker.debian.org/tracker/CVE-2019-10131
RUN apt-get update && export DEBIAN_FRONTEND=noninteractive \
    && apt-get purge -y imagemagick imagemagick-6-common \
    && apt-get install -y git \
    && apt-get install -y curl \
    && apt-get install -y python3 \
    && apt-get install -y cmake

RUN curl -fsSL https://deb.nodesource.com/setup_${NODE_VERSION}.x -o nodesource_setup.sh \
    && bash nodesource_setup.sh \
    && apt-get install -y nodejs

# Rust and Cargo is installed already
RUN cargo install tree-sitter-cli

WORKDIR /em
RUN git clone https://github.com/emscripten-core/emsdk.git
RUN /em/emsdk/emsdk install latest
RUN /em/emsdk/emsdk activate latest
WORKDIR /em/emsdk
RUN chmod +x /em/emsdk/emsdk_env.sh \
    && . ./emsdk_env.sh

# Setting the path via the emsdk_env.sh call doesn't persist, so we need to set it here
ENV PATH="/em/emsdk:/em/emsdk/upstream/emscripten:${PATH}"

WORKDIR /tree-sitter
RUN git clone ${TREE_SITTER_GRAMMAR_GIT_URL}
WORKDIR /tree-sitter/${TREE_SITTER_NAME}
RUN tree-sitter generate
RUN tree-sitter build --wasm

# Without the extra step here, the buildkit copy to the host doesn't work
FROM tree-sitter AS built
# This is a hack to get the wasm file out of the tree-sitter layer
WORKDIR /built
COPY --from=tree-sitter /tree-sitter/${TREE_SITTER_NAME}/${TREE_SITTER_NAME}.wasm .

FROM scratch
COPY --from=built /built/. .

10 minutes of content in 2 minutes

4 min read

I didn’t spend too long on Cadence before switching to another project. But I have one short and very memorable moment from the Epic User Group Meeting in 1995 while still on the Cadence team. Cadence GUI was to be demonstrated for the first time in front of all attendees. We were sitting in a very large room at the Alliant Energy Center complex as the attendance had outgrown the Concourse Hotel space (bigger, but not better).

Three of us sat in the left front row waiting for the main session to start. (It was an awful place to sit so we weren’t taking up seats that were desirable by customers). We were mostly just joking around with a bit of tense energy.

Carl was “headlining” though and had to do a presentation before we did our debut demo-dance. He sat down next to us, visibly nervous. He was normally composed, so it seemed out of character from my experiences with him. I don’t remember the exact words, but this captures the moment:

I have about 10 minutes worth of content. I’ve practiced and I’m going to do it in about 2 minutes. —Carl

We laughed thinking he was joking, but he assured us, he was not. As ever helpful coworkers, we provided no great advice to calm his nerves, as we had none. It was too late anyway.

Bless his heart. He got up in front of the audience and slowed down and went over his prediction by no more than a minute or so. It was RAPID FIRE INFORMATION. It was awesome and hilarious: it was impossible to keep up. 🤯

It took me more than a few years to be far less nervous doing my own presentations.

It’s funny that he gave me advice after a sales presentation … “you know this stuff inside and out. Just talk about it.” And I realized, I did! I didn’t need to write everything down. I knew what I wanted to talk about. If I left something out, I was the only one that knew really. If I ad-libbed a bit of content, again, I was the only one that knew.

While “knowing the material” isn’t enough to get rid of presentation nerves for a lot of people, that little piece of advice helped me a lot. I started to remove a ton of words from my slides after that. If the words were there for me as anything more than a direction/general topic, then I’d delete them. The words and images/diagrams were there for everyone else. Not me. That was a shift for my approach, but it worked so well.

If I didn’t know the material, then I learned it. It shouldn’t be a surprise how much better a presentation can be when the speaker is confident in the material. It doesn’t make them a great speaker, but it certainly helps establish credibility which is far too often lacking in technical presentations.

Additionally, I would think about what questions I’d ask if I were listening to the presentation and prep for those specifically (and modify content accordingly). If someone caught me off-guard with a question that I’d not considered, I’d write it down and not let it bother me that I’d missed something.

”I don’t know, but I’ll find out” is much better than trying to sidestep and faking it.

The Cadence GUI Demo

It went fine as demos go. I recall we had a glitch, but recovered (and we made it clear it was a work-in-progress). Was there thunderous applause after the demo and a standing ovation? Abso-gui-lutely! OK, not so much. A polite applause. (“Clap clap, when is lunch?“) Since it wasn’t a new product, the interest was mostly about new workflows and improvements to scheduling efficiencies that would result.

Presentations

What’s helped you doing presentations? Or what still bothers you about doing a presentation in an unfamiliar setting? I’ve heard so so so many people over the years say: “I hate doing presentations.” Are you one of them? If you need help with your corporate review or “big pitch” presentation, please consider my 1 or 6 hour consulting services.

Hi! Before you go...🙏

I really appreciate you stopping by and reading my blog!

You might not know that each Epic blog post takes me several hours to write and edit.

If you could help me by using my Amazon affiliate links, it would further encourage me to write these stories for you (and help justify the time spent). As always, the links don't add cost to the purchase you're making, I'll just get a little something from Amazon as a thanks.

I'll occasionally write a blog post with a recommendation and I've also added a page dedicated to some of my more well-liked things. While you can buy something I've recommended, you can also just jump to Amazon and make a purchase. Thanks again!