Sprint 1 - So Far so Good
It's the first week of our first sprint! I can feel the pace picking up. Love it! Here's the works I've done:
🦀 Hurl
Use variables in integration test
This was a follow-up from my previous PR. Continuing on the topic of headers, the maintainer suggested me to add an integration test which uses variables to configure headers.
I actually didn't know this feature until then. I am always amazed by the niche features that Hurl has to offer. I guess the surprises just kept on coming! Essentially, you can have a hurl file like this:
GET https://example.org/
[Options]
header: {{my_header}}
GET https://example.com/
[Options]
header: not-from-variable
...
and execute hurl
with --variable
:
$ hurl hurl_file.hurl --variable my_header=from_variable
This way, you can apply headers to certain requests without having to type it out under every one of them. Neat!
In this PR, I simply created a new integration test with this syntax, which was merged without any problems.
Allow empty headers
This was also a follow-up, but from way back. The issue was created back when I was adding the --header
option. In a comment, I expressed my confusion about the behavior if the header is empty. Later it evolved into a conversation between the maintainers and then the said issue.
In case you don't know, here's how curl
(as well as libcurl
) handles it:
Remove an internal header by giving a replacement without content on the right side of the colon, as in: -H "Host:". If you send the custom header with no-value then its header must be terminated with a semicolon, such as -H "X-Custom-Header;" to send "X-Custom-Header:"
However, the maintainers of Hurl decided that they would not keep this consistent with curl
. Instead, they wanted to use Header:
to simply set an empty header. If the ability to remove headers is needed, they could implement it as a separate option in the future.
Other than this feature tweak, there's also a --curl
option in Hurl to convert hurl file specs to curl
commands. Because of this change in behavior, I also added some code to make sure this feature work as expected.
TLDR: Now you can use --header 'Header:'
to set an empty header!
🌌 Starchart
My initial plan with Starchart was to simply update the dependencies. There had been a lot of development in this project this week, but all work was not done by the time I tested it.
First of all, I noticed that despite most vulnerabilities being fixed, most packages were still extremely out-of-date. I randomly decided to update eslint
, or at least try to. Turned out there was a series of issues waiting ahead:
As soon as I bumped up the version number of eslint
, I was greeted with a message:
Apparently, in version 9, ESLint decided to deprecate the eslintrc
configuration method, which this project is using. Since version 8 had already reached its end of life, migration was necessary.
Not a big deal, I thought. I just needed to look up the migration guide. Fortunately, their official documentation had a detailed page on this matter and they even provided a tool to automate this process.
The migration was smooth but I ran into another issue:
So yeah... More deprecation: This time it was the @remix-run/eslint-config
package. Looking through their description I realized that this tool relies on the old configuration method, so if I don't deal with this first, I couldn't do anything with ESLint either.
Feeling puzzled, I created an issue asking for more opinions. My professor later chimed in and suggested that we switch to Oxc. He commented that "A tool should work for me, not me for it", which I 100% agree.
I've heard good things about this tool before, and hey, it's written in Rust. How could I say no to that! 😆
👥 Sprint Meeting
During our Thursday meeting we each demoed the progress on our work. Not gonna lie, I was still pretty anxious.
Before the meeting I prepared a sheet with bullet points of what I wanted to say, but during the meeting I found myself not able to read it at all.
During the demo, I caught myself getting lost in my speech. And my only fallback strategy was to tell the story chronologically. This might work in a blog post like this, but not in a presentation - Despite me including a lot of unnecessary details, I still couldn't tell if I got my points across or not.
I think there's still a long way to go before I can be comfortable in this type of meetings, but I'm willing to keep practicing.
Some of the feedback and things I learned:
- Bring in more empathy. Think from the listener's perspective. What do they want to know? What do they need to know?
- Think about what details are necessary to the audience. Some details might be important to me, but not necessarily to the listeners. Remove those that are not needed.
- Try making some simple slides. It might be better than looking back and forth between my screen and paper.
- Pre-record or screenshot the work while working on it, and save it for the demo.
Source: View source