Embracing AI with the Arc Browser

Despite my previous criticisms of the Arc browser in my usage notes, its unique features and aesthetic appeal are quite attractive to me. Hence, I often find myself switching my default browser to Arc on my computer. Overall, the user experience is quite good, except for the fact that the extension status is not visible and needs to be invoked from the menu when needed. After this switch and update to the Arc browser, I noticed that there's a new AI tab in the settings called Max, which seems quite interesting. Based on a quick look at this settings page, it has the following main features: Ask questions based on the current page content Generate a preview of the link content based on AI Use AI to intelligently name the title of the open tab and the downloaded file Invoke ChatGPT to ask questions After trying it out, I think the idea is quite good, but there is still room for further improvement.

How to Publish a Gradle Project to Maven Central Repository

How can you publish the output of a completed gradle project to the Maven Central Repository, so that everyone can benefit from your work? Last week, I went through the process and published a simple clipboard operation project I wrote. I found it a bit complicated, the process was long, and with gradle, the updates are too fast and compatibility is poor. This makes the documents found online somewhat inconsistent. What's worse, even the official gradle publishing tutorial from Sonatype is inconsistent with the latest gradle8 version. Therefore, I could only refer to the process inside, and the details had to be figured out by myself.

Clipboard Access in JVM

The idea originated from my desire to write a Kotlin script that reads the content of the clipboard and saves it to a file. However, after searching online, the methods given by Java and Kotlin both access the system clipboard through the awt package in the JDK. Since Kotlin scripts still run on the JVM target, the methods are universal.

A Brief Note on Using the Arc Browser

I had heard about the Arc browser, which claims to change the browser landscape and replace Chrome, but it was only available for Macos and not for Windows systems, so all I could do was wait and see. It wasn't until I got a Mac for work and bought a MacBook for myself that I finally had the chance to try it out. So, I immediately downloaded it, set it as the default browser, and started to explore. Upon opening the Arc browser, the first impression it gives is that it's visually appealing, with its design and animation effects giving a flamboyant vibe. It's said that these features come at a cost to performance, but I didn't notice any performance issues during actual use. In actual use, compared to Chrome-based browsers, Arc has the following main features: Vertical sidebar. Arc moves the top tab bar, address bar, bookmarks, etc., to the sidebar to provide more browsing height.

A Better Way to Write Scripts

During graduation season, I took some photos with my classmates. The photos shared later were in the HEIC format, which can be opened directly on the computer. However, the iCloud album only supports the jpg format for uploading photos. Even if these photos were taken with an iPhone, they cannot be uploaded directly. There was no choice but to manually convert the photo format. There are many online tools for converting HEIC to JPG, but they can only upload one by one, and then download one by one. This obviously is not a good solution for situations where a large number of photos need to be processed. Therefore, the natural plan was to write a script for conversion. Of course, now with ChatGPT, there's no need to write scripts personally. Just throw the problem at it, and we only need to do the code moving work. It looks very good. Copy it locally, replace the path and run it, only to find that the script cannot run properly.

Umami: A Simpler Self-Hosted Website Statistics Service

Previously, I used Google Analytics to provide website statistics services, tracking the visits to each page on my blog. It's usable, but Google Analytics offers too much statistical content, which is quite overwhelming. Moreover, Google's services always have accessibility issues. Therefore, after reading other bloggers' introductions to Umami, I decided to set up my own website statistics service and switch to it.

Umami is a simple, fast, privacy-focused alternative to Google Analytics.

Why Firefox?

I've been using Microsoft's built-in password management tool all along. The PC end can use the password filling and query functions provided by Edge, and the mobile end can use Authenticator launched by Microsoft as the mobile password management tool. Although it's easy to use, it essentially means that the PC browser needs to be strongly bound to Edge and Microsoft. It's not very convenient if you want to switch to other browsers. In the past two weeks, I started to use Bitwarden as a password manager, thus getting rid of the dependence on Edge. Therefore, I immediately updated the FireFox browser on my computer and tried to use it as the default browser. The user experience is not bad, it has all the features I need, and its performance is similar to Chrome and Edge. However, the performance of FireFox is just okay, there are not many outstanding aspects, it can only be said that it is close to or almost as good as Edge.

Don't Take Open Source Software for Granted

This morning, while scrolling through Twitter, I came across an article written by the author of core-js a couple of days ago, about his experiences developing open source software. His experiences are indeed eye-opening and heart-wrenching. What is most shocking and saddening is that the core-js, which the author has put a lot of effort into developing and maintaining, has indeed gained everyone's attention and recognition (it has nearly 20k stars on GitHub), and this software library is also widely used (the total download volume on npm has reached 9 billion, 52% of the top 1000 websites use core-js, and 75-80% of the top 100 websites use it). However, such widespread recognition and use has not brought any income to the author. The peak period of a few hundred dollars in monthly donations is not at all commensurate with the time and effort required to maintain the project. Added to the fact that the author is unemployed and in a rather sensitive country, the income is indeed a bit lacking, and can even be considered impoverished.

A Record on Using Spring GraphQL

Spring GraphQL is a new Spring Application integrating GraphQL, released by Spring this year. Thanks to the out-of-the-box features of Spring Boot, it allows for the quick construction of a usable GraphQL service. However, despite its usability, the documentation leaves much to be desired, especially for some advanced features, which require self-exploration through the API documentation.

The Ins and Outs of 996

After brushing up on some videos about political economy and philosophy on Bilibili in May, I rekindled my interest in this area of knowledge and started following some up masters to learn more. Among them, I particularly enjoyed Weimingzi's discussion on the topic of 996. I found it insightful and inspiring, so I decided to jot down some thoughts on the matter.

Blog Switched to Hugo

In less than half a year, I have revamped my blog again. I spent more than two days switching the blog from the original Hexo + Stun to Hugo + MemE. There are many reasons for wanting to switch, for example: The speed at which Hexo generates pages has become a bit slow. I have only about 70 pages, and each build deployment plus submission may take one to two minutes, and as the content written over time increases, it will take longer and longer. The original theme seemed a bit inappropriate. Now I prefer the blog style to be simpler, allowing the focus of the website to return to the text itself. This also prompted me to ban all non-centered article bodies when choosing a theme this time. The original blog feels like there are too many useless and verbose pages and features, including the so-called background music playback. In order to have a better background music playback experience, I had to use PJAX.

Postscript on Using Double Pinyin

I've been using the double pinyin input method for over a month now, and I've pretty much mastered this skill. Now, I primarily use double pinyin as my daily input scheme. In daily use, I haven't encountered any major issues, but the advertised significant efficiency boost isn't exactly noticeable. However, I've grown accustomed to it and will likely continue using it.

Blog Domain Migration

I got up early in the morning and found out that the domain I've been using for two years is due to expire in a month, reminding me to renew it. After dealing with some things, I went to renew it, only to find out that the renewal fee is 72 yuan per year, which shocked me. It was only a few yuan when I first opened it, and the first year's renewal was only about twenty to thirty yuan. The change was too drastic, and for a small personal site like mine, it's indeed expensive. I checked the current domain prices and found that the price of the .club suffix is indeed uniquely expensive, even more expensive than some .cn suffixes, which is a bit outrageous. So, I decisively chose to switch back to the .top domain I first used, which only costs 25 yuan a year to renew, and with the first year discount, I spent less than 60 yuan for three years.

On the other hand, changing domains also has quite a few costs, and the longer you use it, the higher the sunk cost. Accumulated SEO and RSS subscriptions are difficult to follow the domain switch and convert over, and may need to be accumulated again, and various statistical analyses may need to be discarded. But it still needs to be done, after all, the characteristic of the internet should be open and free, and should not be overly constrained.

The site has now moved to the domain https://scottyeung.top/

Some Notes on SQLAlchemy

Recently, I have been collecting and processing a large amount of data, which usually involves converting XML/text format data into relational, structured data for easy export and direct analysis, especially formats that can be directly analyzed by pandas (csv/json). Therefore, I need to use a mysql processing library in Python. Since I was looking for a processing library, I decided to go all out and choose a library that supports ORM. So, I chose SQLAlchemy. After using it for a while, I decided to write a record to remember the commonly used things during this period.

SQLAlchemy is an open-source software under the Python programming language. It provides an SQL toolkit and Object-Relational Mapping (ORM) tools, mainly to meet the following needs:

  • Provide common operations on databases: add, delete, modify, and query
  • Provide ORM functionality, which can turn the operating unit into an object, so there is no need to write sql statements for hard coding/decoding parsing data

Summary of Automate the Boring Stuff with Python

This book is about how to automate work with Python and where it can be applied. It is aimed at non-programmers who want to increase productivity and reduce repetitive work. As a future programmer, why do I recommend this book aimed at non-programmers? In my view, code is a tool. As a tool, it should be used to help solve problems and meet needs. However, in many of our coding-related learning, we don't consider why, but simply learn what. This learning method is not efficient, and the most critical thing is that there will be a sense of confusion about what it is used for/whether it is useful, thereby losing the motivation to continue learning. Therefore, I recommend this book, starting from the demand, using the demand as the goal, telling you what you can do, and you don't have to learn the specific use part in order, you can jump to the relevant part based on the demand after mastering certain basic syntax.