top of page

Some things happened recently that made me want a healthy outlet for expressing my thoughts and emotions, and so I decided to add morning pages back into my routine.


Morning Pages

Morning pages is a journaling method introduced in The Artist's Way: A Spiritual Path to Higher Creativity by Julia Cameron, a self-help book about artistic creative recovery. In the morning, you fill out 3 pages of a notebook with whatever topics that come to mind. It’s supposed to be just a stream-of-consciousness mental dump of everything that you’re thinking, and you can write about anything. I always think that I have nothing to write and wonder how I’m going to fill out 3 full pages, but I also always manage to do it. It’s helped with my retention and creativity too. 


Apparently you’re supposed to do it right in the morning when you wake up, but my mornings can be quite hectic, so I usually just find any time during the day. These days, my morning pages are pages and pages of negativity, but I hope to eventually get to a place where I don’t focus too much on the negative, and instead write more about the things I’m grateful for. When you write something down, your brain remembers it better. If you only write about the negative thoughts and emotions you have, you’ll remember them the most, and you’ll feel as if your life is worse than it actually is.


7 questions to ask yourself for daily future self-journaling

For me, morning pages is an effective way to self-reflect on where I am now, mentally and emotionally. I’m looking to achieve mental clarity on where I am now, and then think about where I want to go, or not want to go. When I get to that stage, I’ll probably start using journaling prompts, which can be an effective way of getting asked those good questions that’ll make me reflect further, then switch to another technique called future self journaling, where I answer these same 7 questions every day.


Benefits of Journaling

Journaling is an expressive coping method, a technique that helps a person process negative thoughts, feelings, or experiences by releasing them. By putting these things on the page, they can have less power over you. Writing about negative events can be extremely cathartic. It allows you to “cage” your thoughts and emotions so that you can acknowledge that they’re there and process them over time in a healthy way, instead of doing something stupid or getting angry and picking fights with people in real life.


Journal App on GitHub

I have an irrational fear of people reading my journal hacking after I'm gone. Nothing wrong with what I write, but it's personal and I'd prefer that it remains private. So I built my own very simple journal app on GitHub, which is basically just a single text box with character count at the top (I journal in my native language so character count makes more sense than word count). When I'm done, I click the submit button at the bottom to delete what I just wrote, or simply close the page. This works for me because I've never been the type to find value in going back and reading my past entries. Having them saved would just make me anxious that someone else will find and read it.


Digital Journaling

Personally, I don't think it matters whether you handwrite or type your journal. For those who prefer digital journaling (and keeping in mind that I'm probably in the minority for wanting to destroy my journal entries immediately after I've written them) -- 750words.com is a writing site that encourages you to write at least 750 words (roughly equivalent to 3 written pages in a notebook), while gamifying the experience with streak counts and graphs visualizing the data about your writing, such as your sentiment and how often you use the same words. They recently switched over to a members-only system though, so a good free alternative is writehoney.com 


SEO in Mainland China is an entirely different game than SEO on Google for other markets. If you’re looking to increase organic traffic from Chinese users, it’s essential to understand the local players, users’ search behaviours, and unique ranking factors for Chinese SEO. In this post, I will share the best practices to rank pages on Baidu, the “Chinese Google”, and address additional factors that may influence a website’s ranking. 


What is Baidu?

The Great Firewall policy regulates the websites that users in China can access. Instead of Google, you’ll need to optimize your pages for local search engines such as Baidu, Sogou, and Shenma. The most popular is Baidu, with over 676 million daily active users in 2024, and 3.3 billion daily internet queries. 

Baidu homepage

Keyword Ranking Tools for Baidu SEO

Third-party tools such as 5118, Ciku5, and Chinaz are available for Chinese keyword research. These are similar to the well-loved English SEO keyword tools such as ahrefs and SEMrush. 


Similar to Google, Baidu also has built-in digital marketing tools that you can leverage for keyword research.

  • Baidu keyword planner, accessible through a Baidu PPC (Phoenix Nest manager) account, provides keywords and their search volumes, similar to Google’s keyword planner in Google Ads. 

  • Baidu Index, Baidu’s Google Trend equivalent, helps you visualize keyword relevancy and popularity over time, often providing useful insights for SEO and keyword research. 


In addition, these Baidu tools will be useful for your overall SEO strategy.

  • Baidu webmaster tools can be used to track indexing issues and site performance, similar to Google Search Console.

  • Baidu Tongji (Analytics), similar to Google Analytics, provides data on user behavior, traffic sources, and keyword effectiveness.

  • Baidu Zhidao is China’s largest Q&A forum, similar to Quora in English. As Baidu Zhidao often ranks high for search queries, it should be part of your Chinese digital marketing strategy. 


Chinese Hosting Server

Baidu is first and foremost a Chinese search engine, so it makes sense that its algorithm massively favours Chinese localization – whether it’s server location, top-level domain (.cn), business address, content language, or citations. Hosting your website locally will help Baidu index your content faster. Also, getting a domain name from a Chinese registar will increase the credibility of your pages, as seen by Baidu. 


Note that you are required to obtain an Internet Content Publishing (ICP) license before hosting your domain in China. This is a required authorization for international brands to operate a website legally in the Chinese market. Not only is it a legal requirement, but it also helps to build trust with local users.


There are some rumors that Baidu ranks sites with visible ICP licenses higher in rankings, but this has yet to be proven. Still, if you do get an ICP license, it can only be a potential benefit to display it on the footer of your site. 

Website Localization

Chinese search engines do not favor non-Chinese websites or content that is irrelevant to the local market. When localizing an English website for the Chinese market, note that Baidu is predominantly available in simplified Chinese, which is typically used in mainland China, Singapore, and Malaysia. Traditional Chinese, used in Taiwan, Hong Kong, and Macau, is supported on Baidu, but the platform is programmed for simplified Chinese, and often converts traditional to simplified Chinese. 


Website Design

Why do Chinese websites seem so messy and cluttered compared to their Western counterparts? The homepage of 4399, a leading Chinese online gaming company, is a prime example.

Homepage of 4399, a leading Chinese online gaming company

Similar to the Japanese, many Chinese websites try to display as much content as possible on the homepage. This minimizes the need to type Chinese characters in a search bar, which can be more cumbersome for users than clicking around. However, more and more web developers nowadays are favoring simplistic and minimalist designs. This trend is especially growing among younger generations.


---

Looking to unlock the potential of China's vast online market? As a freelancer supporting many global brands, I can help you to find the best keywords to increase organic traffic and reach your target audience on Baidu. Feel free to contact me for Chinese SEO services.

I was working on a project where I needed to download a file from a remote SFTP server, and upload it to Databricks. There are multiple ways to achieve this such as netmiko, pysftp, and paramiko scp. Python has several libraries for interacting with SFTP servers, but the solution that I ended up using is a python script with paramiko client.


What is SFTP?

SFTP (SSH File Transfer Protocol) is a secure file transfer protocol that operates over the SSH (Secure Shell) protocol. It enables users to access, transfer, and manage files securely over a network, and can be accessed via free tools such as Cyberduck, FileZilla, and WinSCP. While newer protocols like HTTP/3 and WebDAV have come out, SFTP continues to be a relevant tool for secure file transfers.


What is paramiko?

According to paramiko.org documentation, paramiko is a python implementation of SSHv2. It provides both client and server-side functionality. To connect to the remover server and transfer the file or perform any operations, we need to create a paramiko client as shown below.

SSH_Client= Paramiko.SSHClient()

Connecting to the Remote Server

Once we have created a paramiko client, we can then use the username and password for authentication to connect to the server.

ssh_client = paramiko.SSHClient()
ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh_client.connect(hostname=host,port=port,username=username,password=password)

The best practice is to store your login credentials in an encrypted format, such as in Azure Key Vault, rather than hardcoding them. This not only enhances security, but also eliminates the need to update credentials across multiple code files whenever the username or password changes.


Transferring Files

To transfer files, we need to first create an SFTP session between the client and the server, using the SSHClient that we have created earlier.

ftp = ssh_client.open_sftp()

Then, do the API call to import the file from SFTP to DBFS or another local system.

dbfs_file_path = "/dbfs/xxxyyy.csv" # update
ftp_file_path = "/Import/xxxyyy.csv" # update
files = ftp.get(ftp_csv_path, dbfs_file_path)

If you need to import a file from local system to SFTP, use the function ftp.put

files = ftp.put(dbfs_file_path, ftp_csv_path)

Once the file transfer is done, close the session by calling close() function.

ftp.close()
ssh_client.close()

For more on SSH sessions with paramiko, check out this tutorial video by DevOps Journey, which also covers additional settings such as look_for_keys and AutoAddPolicy.


bottom of page