iTranslated by AI
Productivity Weekly (2021-09-01 Issue)
Hello. This is Hirakiba from the Productivity Improvement Team at Cybozu Inc.
Our Productivity Improvement Team holds an internal meeting called "Productivity Weekly" every Wednesday to share news and tips discovered during the week regarding developer productivity improvement.
This article is a compilation of the topics from that meeting.
This is the 41st issue. You can find past articles here.
news 📺
Docker is Updating and Extending Our Product Subscriptions - Docker Blog
Docker has revamped its product subscriptions.
Previously, Docker subscriptions were divided into Free, Pro, and Team. From now on, they will be categorized as Personal, Pro, Team, and Business (Free has been renamed to Personal, and Business has been newly added).
Docker Business is a plan for large enterprises. Compared to the Team plan, it offers features such as Image Access Management, SAML SSO (not yet implemented), and payment by invoice (Reference: Compare All Features). Since SSO makes user management much easier (especially when someone leaves the company), I think this is a long-awaited feature for large organizations. The price is $21 per user per month[1].
Additionally, Docker Desktop has become paid for some users. Specifically, a paid subscription (Pro or higher) is required for use in companies with more than 250 employees or more than $10 million in annual revenue. Therefore, individuals and companies that do not meet these criteria can continue to use it for free as before. While the terms have already been updated, there is a grace period until January 31, 2022, so you just need to comply by then.
Docker Desktop is a desktop application for Windows and Mac that manages the tedious configurations (such as volume mounts and Linux VM setup) required to use components like Docker Engine and Docker CLI. It also includes unique features like Docker Dev Environments. Of course, you could avoid using Docker Desktop by manually installing all the necessary components and configuring the host side yourself, but it is extremely troublesome.
Alternatives to Docker Desktop on Mac include Podman and lima, but honestly, I don't think there's anyone who fully understands what can and cannot be done with them. Furthermore, related tools used for development, such as VSCode Remote Containers which requires Docker Desktop, have an unclear status on how well they work without Docker Desktop. For professional use, such verification is unavoidable. Considering the costs of verification and training all employees to use an alternative, I believe it is currently cheaper to simply pay Docker[2] (I hope they implement SSO in Docker Business soon). That being said, exploring alternatives sounds fun, so I'd like to try it out.
Regarding alternatives to Docker Desktop, the following article provides a detailed investigation. I expect many more articles like this to come out.
This was quite big news, and on September 1st when it was announced, my Twitter timeline was filled with talk about Docker Desktop. With less than six months of grace period, we can't afford to be too complacent. I sympathize with the coordinators at each company just like last year... Since Docker has been so helpful to us, I hope this move makes them very successful.
GitHub Actions: Setup-java now supports dependency caching | GitHub Changelog
Previously, I introduced that the actions/setup-node action for setting up Node.js in GitHub Actions now has a dependency caching feature. Recently, the dependency caching feature was also added to the actions/setup-java action. It supports both Maven and Gradle projects.
By the way, here is the corresponding pull request:
I was curious if it supports monorepos, so I experimented with it. Saving and restoring the cache worked normally (unlike Node.js, the cache is stored under the home directory instead of the project repository, so I guess it makes sense).
Experiment logs
Trying to resolve the latest version from remote
Resolved latest version as 11.0.12+7
Trying to download...
Downloading Java 11.0.12+7 (Temurin-Hotspot) from https://github.com/adoptium/temurin11-binaries/releases/download/jdk-11.0.12%2B7/OpenJDK11U-jdk_x64_linux_hotspot_11.0.12_7.tar.gz ...
Extracting Java archive...
/usr/bin/tar xz --warning=no-unknown-keyword -C /home/runner/work/_temp/c58a3e93-a29e-4ffd-b3a7-aef8aaca8600 -f /home/runner/work/_temp/2e0a8030-225f-40a6-9d46-f483afa0602a
Java 11.0.12+7 was downloaded
Setting Java 11.0.12+7 as the default
Java configuration:
Distribution: temurin
Version: 11.0.12+7
Path: /opt/hostedtoolcache/Java_Temurin-Hotspot_jdk/11.0.12-7/x64
Creating settings.xml with server-id: github
Writing to /home/runner/.m2/settings.xml
gradle cache is not found
Post job cleanup.
/usr/bin/tar --posix --use-compress-program zstd -T0 -cf cache.tzst -P -C /home/runner/work/playground/playground --files-from manifest.txt
Cache Size: ~1 MB (736317 B)
Cache saved successfully
Cache saved with the key: setup-java-Linux-gradle-6bb41f37bac64fd32ea8be29c61841e20473e137d303427b99352e0e5b754c90
Trying to resolve the latest version from remote
Resolved latest version as 11.0.12+7
Trying to download...
Downloading Java 11.0.12+7 (Temurin-Hotspot) from https://github.com/adoptium/temurin11-binaries/releases/download/jdk-11.0.12%2B7/OpenJDK11U-jdk_x64_linux_hotspot_11.0.12_7.tar.gz ...
Extracting Java archive...
/usr/bin/tar xz --warning=no-unknown-keyword -C /home/runner/work/_temp/ac81e2ad-9acb-419f-b770-52118455c7f6 -f /home/runner/work/_temp/5ad533b6-3816-4fe9-b3bf-04ebf8e3e6e5
Java 11.0.12+7 was downloaded
Setting Java 11.0.12+7 as the default
Java configuration:
Distribution: temurin
Version: 11.0.12+7
Path: /opt/hostedtoolcache/Java_Temurin-Hotspot_jdk/11.0.12-7/x64
Creating settings.xml with server-id: github
Writing to /home/runner/.m2/settings.xml
Received 735837 of 735837 (100.0%), 21.9 MBs/sec
Cache Size: ~1 MB (735837 B)
/usr/bin/tar --use-compress-program zstd -d -xf /home/runner/work/_temp/b7434d2d-e399-4a77-8bd1-7a9c397a9589/cache.tzst -P -C /home/runner/work/playground/playground
Cache restored successfully
Cache restored from key: setup-java-Linux-gradle-6bb41f37bac64fd32ea8be29c61841e20473e137d303427b99352e0e5b754c90
Post job cleanup.
Cache hit occurred on the primary key setup-java-Linux-gradle-6bb41f37bac64fd32ea8be29c61841e20473e137d303427b99352e0e5b754c90, not saving cache.
This is also great because it reduces the amount of workflow description. I want to make good use of it.
Sunset Notice: API Authentication via Query Parameters | GitHub Changelog
GitHub is sunsetting support for API authentication via query parameters (September 8, 2021, 14:00 UTC). There will be no issues if you are using the Authorization header or (in the case of OAuth apps) the curl -u option.
Authentication via query parameters looks like this:
curl "https://api.github.com/user/repos?access_token=my_access_token"
By the way, I didn't know that the GitHub API allowed authentication via queries. If you are calling the API this way, you should fix it immediately.
New for AWS CloudFormation – Quickly Retry Stack Operations from the Point of Failure | AWS News Blog
Announcement in Japanese: AWS CloudFormation released options to troubleshoot provisioning errors before rollback and accelerate deployments
In AWS CloudFormation, when stack provisioning fails, it is now possible to retry from the creation of the failed resource.
Until now, since all resources were automatically rolled back upon failure, there were issues such as having to wait a long time every time a change was made, which slowed down development speed and was generally frustrating (of course, there are cases where automatic rollback of all resources is better). Whether or not to perform an automatic rollback can be specified from the console via "Stack failure options" or from the AWS CLI via the --disable-rollback option.
This should significantly shorten the development cycle using CloudFormation. I want to use it appropriately.
know-how 🎓
Corepack: A Package Manager Manager Added to Node.js / #tng37 - Speaker Deck
These are explanatory slides for Corepack, a package manager manager added to Node.js[3]. Corepack is a tool for managing package managers. By being included in Node.js, it eliminates the need to install Yarn and pnpm separately. These slides cover why Corepack is necessary, how to use it, points to note, and when it becomes available.
Personally, what I like about Corepack is that it allows restricting the use of package managers other than the specified one. I often accidentally use npm and end up generating a package-lock.json... and vice versa. I hope it gets bundled as a standard feature soon.
What does the Productivity Improvement Team do? ~ Cross-organizational initiatives to improve internal development productivity ~ - Seminar Program - Open Developers Conference (ODC) 2021 Online
Recently, the Productivity Improvement Team I belong to spoke at Open Developers Conference 2021. I had mentioned it in previous Weekly articles, but I noticed the video has been released, so I'll promote it here.
The content of the talk was as follows:
- Team introduction
- AWS multi-account management
- Building an auto-scaling GitHub Actions self-hosted runner
- Improving CI for product teams and lessons learned from the improvement
Session details and slides can be found on this page.
If you are interested in what the Productivity Improvement Team is and what exactly we do, please check it out.
Other presentations are also available on YouTube, so be sure to check them out if you're interested.
Afterword
This week was the second session of our internship program. Preparing for it was a lot of work, but it was great because it was fun and there were many things to learn. Well... this Friday was the CI/CD Conference 2021. I was hoping to catch some of it between internship tasks, but I simply had no time at all. Alas... so I'm planning to watch the archives later.
The Productivity Improvement Team holds these sharing sessions every week. If you're interested in the Productivity Improvement Team, click the link below!
omake
Here is this week's bonus.
Why are hyperlinks blue?
This is an article by someone from Mozilla investigating why hyperlinks are blue. There is also a version translated into Japanese (Blog: Why are hyperlinks blue?).
It includes thoughts on since when and why they became blue. It's interesting just to look at, as it introduces ancient hyperlinks with images.
Apparently, they have been blue since before I was born. The first computer I ever touched was Windows 98, and by then, IE was already well-established. It brings back memories. I like these kinds of "Internet archaeology" stories because they're always a great topic for discussion.
-
The Team plan, which is one level lower, costs $7 per user per month (if paid annually), so the difference is quite startling. Is this typical for enterprise plans? ↩︎
-
Docker's financial situation seems a bit tight, so I feel even more like paying them. ↩︎
-
Actually, Corepack itself was introduced in a previous Weekly issue. ↩︎
Discussion