Skip to content

Home

My Hand Writes My Heart

Hello and welcome to "Continuous Improvement," the podcast where we explore personal growth, self-reflection, and the pursuit of inner peace. I'm your host, Victor, and today we're diving into the powerful concept of finding inner peace through self-reflection.

In our fast-paced and chaotic world, it's easy to lose sight of ourselves and become entangled in external events and expectations. But as our blog post content suggests, writing can be therapeutic and help us gather our thoughts to find the answers we seek.

Today, I'll be sharing my own personal journey, as written in the blog post, and discussing the importance of facing our emotions, taking responsibility for our relationships, and confronting the societal pressures that weigh us down.

The blog post begins with the author's return trip to Hong Kong, a place they hadn't visited in almost two years due to the COVID-19 pandemic. Despite the excitement of being back home, they found themselves unexpectedly frustrated, sad, and lost.

The author delves into the external changes that Hong Kong has undergone, but they recognize that their emotional turmoil stems from within themselves. They highlight the importance of self-reflection for finding inner peace.

Our first point of discussion revolves around the author's familial responsibilities. They express their disappointment in themselves for not meeting certain expectations and using the pandemic as an excuse to avoid them.

It's important to recognize that avoiding responsibilities will only disrupt our inner peace in the long run. Taking the time to confront these challenges head-on can help us build stronger relationships and find a sense of fulfillment.

Moving on, the author explores the tensions within their romantic relationship. While the author believes in considering emigration for political reasons, their partner holds a different perspective due to their aging mother residing in Hong Kong.

This divergence in perspectives can create frustration and a sense of being stuck. We'll discuss how finding common ground and open communication is essential in resolving conflicts and finding compromise without compromising our own values.

Lastly, the author discusses their dissatisfaction with their own life and the societal pressures they face. They admit to feeling like they haven't reached their full potential and compare themselves to others according to societal norms.

This is a struggle many of us face – the constant comparison and the pursuit of traditional markers of success. We'll explore the importance of self-acceptance, embracing our own journey, and finding fulfillment on our own terms.

In conclusion, inner peace is not something we stumble upon; it's a journey of self-reflection and continuous improvement. It requires facing our emotions, taking responsibility for our relationships, and resisting societal pressures that hinder our self-growth.

Join me in our upcoming episodes, where we'll dive deeper into these topics and explore practical steps to cultivate inner peace amidst life's challenges. Remember, true peace begins within.

Thank you for tuning in to this episode of "Continuous Improvement." If you found this discussion valuable, please subscribe and leave a rating or review. And as always, keep striving for personal growth and embracing the path to inner peace.

Until next time, this is Victor signing off. Remember, the journey to continuous improvement starts with you.

我的手寫出我的心

我寫這篇文章是希望找到內心的平靜和自我反思。寫作是有治療效果的。此刻,它幫助我專注,整理我混亂的思想和想法,並在我心中尋找生活問題的答案。它提供了一種解決困擾我、影響我的睡眠並奪走我內心平靜的問題的方法。

今天,我失去了內心的平靜,因為這是我回到香港的最後一天,這是我近兩年來沒有造訪的地方。由於 COVID-19 的情況和各種政府政策,我無法自由地旅行。我待在新加坡,距離我的家人和女朋友只有四小時的飛行時間,我已經很長時間沒有見到他們了。儘管我應該對返回香港感到興奮,但我卻無法理解地感到失落,難過,和迷茫。

我應該對我的家人仍在這裡,我的女朋友安全並和我保持溝通感到感激。然而,香港已經變了,而且不是變好。我不想深入討論政治,但是這種外在變化部分解釋了我的悲傷。然而,我情緒困擾的根本原因在於我自己。我對自己未能達到一些期望感到失望。如果我只是為自己活著,生活將會很簡單;在酒店隔離一周,遠離工作和其他人,讓我感到平靜。

然而,現實是無法避免的。我不能永遠逃避需要我付出關注的關係。不管是家人,我的女朋友,同事,還是朋友,我一直在用大流行病作為藉口來避免面對這些責任。現在我回到了家,我不能再保持我的情緒距離,這打亂了我的內心平靜。

首先,我的家人很棒,能回家真好。然而,我的父母正老去並且即將退休。我必須找到勇氣面對這些事實。健康和金融挑戰是無可避免的,我必須準備好照顧他們。雖然他們在香港,我在新加坡,距離只有四個小時的飛行時間,這是可以管理的 —— 儘管旅行限制造成了不便。

其次,我的女朋友想結婚,但不願離開香港,因為她年邁的母親在那裡。我們的觀點不同,這對我來說很沮喪。我認為考慮移民是非常重要的,尤其是從政治的角度來看。然而,她仍然不信服,如果她愿不愿改變自己的想法,我無法改變她的想法。

第三,我對我自己的生活不滿意。我對漸老和脫髮,以及未能達到傳統的成功標誌感到不開心。我明白我不應該和別人比較,但社會壓力難以抗拒,尤其是當舊朋友和同學似乎按照亞洲的社會規範做得更好。

總的來說,我覺得我還沒有發揮出我全部的潛力,這深深地困擾著我。我正在努力尋找內心的平静,也許现在是停下來冥想,更好地了解自己的时候。

Positioning for Technology Consultancy

Positioning involves applying a systematic, repeatable process to identify the unique attributes of my service, differentiate it from competitors, and articulate this positioning into an effective sales pitch. In this post, I aim to create a differentiated value proposition based on my service's unique features and capabilities.

A positioning challenge arises when some clients view me as a technology consultant while others see me as a software developer. Competing in both categories against fully staffed software vendors, I find myself without a clear positioning strategy. With a saturated market of technology consultants, even the best ones struggle to secure projects. Clients often wonder why they should choose my consultancy over the alternatives. Effective product positioning can help me stand out and capture the unique value of my service in a crowded market.

My ideal customers are those who already intuitively understand the value of my services. Specifically, CEOs and founders of growth-stage fintech startups who have a strong technical background. These individuals prioritize team expansion and product scaling, and they seek solutions to their technical challenges.

From my target customers' perspective, there are several alternatives they might consider before opting for my service:

Alternative 1: Outsourcing to consulting firms

  • Accenture
  • Deloitte
  • Capgemini

Alternative 2: Searching online for technical answers

  • Stack Overflow
  • Quora
  • Reddit

Alternative 3: Hiring in-house roles

  • Software Developer
  • Business Analyst
  • Architect

Alternative 4: Self-learning through videos

  • YouTube tutorials
  • Udemy courses
  • Online coding bootcamps

My service offers unique attributes that set it apart from at least one of these alternatives:

  • Blog content
  • Technical expertise
  • Knowledge sharing
  • Product management skills
  • Personal stories
  • Video content
  • Best practices
  • Business acumen

To identify the most compelling aspects of my service, I repeatedly ask the question "So what?" until I arrive at a value proposition that is clearly differentiated and directly beneficial to customers. Through this exercise, I've identified the following differentiated values:

Differentiated Value 1: CEOs are avid readers, often relying on recommended blogs. My blog offers:

  • 1.1 Blog Content: Condensed into an Amazon Kindle book for easy reading.
  • 1.2 Product Management Skills: Proven experience in product development.
  • 1.3 Technical Expertise: Hands-on software development capabilities.
  • 1.4 Business Acumen: Skills in stakeholder management, leadership, and communication.

Differentiated Value 2: My blog serves as an effective lead generation tool for my consultancy, particularly offering:

  • 2.1 Best Practices: Expertise in the banking industry.
  • 2.2 Knowledge Sharing: Insights into deploying new technical products in financial markets.

Differentiated Value 3: Clients can gauge my approach to business and technology before engaging my services, made possible through:

  • 3.1 Personal Stories: Revealing my experience in technology consulting in the banking industry.
  • 3.2 Video Content: Storytelling with humor.

With these differentiated values in mind, my blog aligns well with a framework that includes:

  • A. Competitive Alternatives: DIY approaches.
  • B. Unique Attributes: Concise, valuable blog posts.
  • C. Differentiated Value: Expertise and thought leadership.
  • D. Best-Fit Customers: CEOs of Series A and Series B fintech startups.
  • E. Market Category: Technology consultancy for financial companies.

As for the next steps, I plan to:

By April 2022

  • Update the landing page messages on my website.
  • Add more case studies.
  • Conduct interviews with top-five clients to refine messaging.

By May 2022

  • Create a sales pitch focused on technology consultancy.
  • Respond to Requests for Proposals (RFPs).
  • Add more technology and business content to my blog for brand awareness.

In summary, I am repositioning as a specialized technology consultant for financial companies. Leveraging a proven agile methodology, I aim to help such companies architect and develop software solutions that improve their business performance. My services range from software development for startups to consulting for larger tech companies and custom product management. To find out more, please visit https://victorleungtw.com/.

Feel free to reach out to discuss how I can assist your team in both business and technology.

Positioning for Technology Consultancy

Welcome to Continuous Improvement, the podcast where we explore strategies and techniques for personal and professional growth. I'm your host, Victor, and in today's episode, we'll be diving into the topic of positioning and how it can help us stand out in a saturated market.

Positioning is all about identifying the unique attributes of our service or product, differentiating it from competitors, and effectively articulating that positioning into a compelling sales pitch. Today, we'll be focusing on creating a differentiated value proposition based on our service's unique features and capabilities.

Now, let's address a common challenge many of us face when it comes to positioning. We may find that some clients view us as technology consultants, while others see us as software developers. So, how do we compete in both categories and stand out against fully staffed software vendors?

The answer lies in effective product positioning. In a market saturated with technology consultants, even the best ones struggle to secure projects. Clients often wonder why they should choose our consultancy over the alternatives. Effective positioning can help us capture the unique value of our service in a crowded market.

Now, let's define our ideal customers. We're targeting CEOs and founders of growth-stage fintech startups who have a strong technical background. These individuals prioritize team expansion and product scaling, and they're seeking solutions to their technical challenges.

To understand our positioning better, let's take a look at some of the alternatives our target customers might consider before choosing our service.

  • Alternative 1: Outsourcing to consulting firms like Accenture, Deloitte, or Capgemini.
  • Alternative 2: Searching online for technical answers on platforms like Stack Overflow, Quora, or Reddit.
  • Alternative 3: Hiring in-house roles such as software developers, business analysts, or architects.
  • Alternative 4: Self-learning through videos on platforms like YouTube, Udemy courses, or online coding bootcamps.

So, with these alternatives in mind, how can we differentiate ourselves? Let's explore some unique attributes that set us apart.

  • First, we have our blog content that is concise and valuable, condensed into an Amazon Kindle book for easy reading.
  • We also bring product management skills and proven experience in product development to the table.
  • Our technical expertise is hands-on, ensuring we have the capabilities to deliver high-quality software solutions.
  • And finally, we have strong business acumen, which includes skills in stakeholder management, leadership, and communication.

But it doesn't end there. Our blog serves as an effective lead generation tool and offers insights and best practices specifically tailored to the banking industry. We also provide personal stories that reveal our experience in technology consulting, allowing clients to gauge our approach before engaging our services. And let's not forget about our video content, where we share stories with a touch of humor.

So, armed with these differentiated values, how do we align our blog within a framework that resonates with our target audience? Here's the breakdown:

  • First, we identify the competitive alternatives, such as DIY approaches that our ideal customers may consider.
  • Second, we highlight our unique attributes, focusing on concise and valuable blog posts, expertise, and thought leadership.
  • Third, we communicate the differentiated value we bring to the table, which includes our expertise and how it benefits our target customers.
  • Next, we define our best-fit customers, which are CEOs of Series A and Series B fintech startups.
  • And finally, we position ourselves within the market category of technology consultancy for financial companies.

So, what are the next steps in our positioning journey? By April 2022, we plan to update the landing page messages on our website, add more case studies, and conduct interviews with our top-five clients to refine our messaging.

By May 2022, we aim to create a sales pitch focused on technology consultancy, respond to Requests for Proposals, and continue adding more technology and business content to our blog for increased brand awareness.

In summary, we're repositioning ourselves as specialized technology consultants for financial companies. Through our proven agile methodology, we aim to help these companies architect and develop software solutions that improve their business performance. Our services range from software development for startups to consulting for larger tech companies and custom product management.

Thank you for joining me on this episode of Continuous Improvement. If you'd like to learn more about our services, please visit our website at victorleungtw.com. And don't hesitate to reach out to discuss how we can assist your team in both business and technology.

Remember, continuous improvement is the key to success. So let's keep evolving and finding new ways to stand out in our respective fields.

定位為科技諮詢

定位涉及應用系統性、重複性的過程,以識別我的服務的獨特屬性,將其與競爭對手區別開來,並將此定位表述為一個有效的銷售話語。在這篇文章中,我目標是根據我的服務的獨特功能和能力創建一個差異化的價值主張。

當一些客戶將我視為技術顧問,而其他人將我視為軟體開發人員時,就會出現定位挑戰。在與完全由軟體供應商組成的兩個類別競爭中,我發現自己沒有清晰的定位策略。即使在科技顧問市場飽和的情況下,即使是最好的人也難以獲得項目。客戶經常想知道為什麼他們應該選擇我的諮詢服務而不是其他選擇。有效的產品定位可以幫助我在擁擠的市場中脫穎而出,並捕捉到我的服務的獨特價值。

我的理想客戶是那些已經直觀地理解我的服務價值的人。特別是具有強大技術背景的成長階段金融科技初創公司的CEO和創始人。這些人優先考慮擴張團隊和產品擴展,並尋求解決他們的技術挑戰的解決方案。

從我目標客戶的角度來看,在選擇我的服務之前,他們可能會考慮幾種替代方案:

替代方案1:外包給諮詢公司

  • Accenture
  • Deloitte
  • Capgemini

替代方案2:在線搜索技術答案

  • Stack Overflow
  • Quora
  • Reddit

替代方案3:聘請內部角色

  • 軟體開發人員
  • 業務分析師
  • 架構師

替代方案4:透過影片自學

  • YouTube教學
  • Udemy 課程
  • 在線編碼培訓班

我的服務提供獨特的屬性,使其至少可以與其中一個替代方案區別開來:

  • 部落格內容
  • 技術專長
  • 知識共享
  • 產品管理技能
  • 個人故事
  • 視頻內容
  • 最佳實踐
  • 商業智識

為了識別我的服務最引人注目的方面,我反覆問 "那又怎樣?" 的問題,直到我得到一個明確差異化並直接對客戶有益的價值主張。通過這個練習,我找到了以下差異化的價值:

差異化價值1:CEO 是熱衷的讀者,經常依靠推薦的部落格。我的部落格提供:

  • 1.1 部落格內容:匯總成 Amazon Kindle 書本,方便閱讀。
  • 1.2 產品管理技能:在產品開發中具有豐富經驗。
  • 1.3 技術專長:具有實際的軟體開發能力。
  • 1.4 商業智識:有利害關係人管理、領導和溝通能力。

差異化價值2:我的部落格充當我的顧問業的有效潛在客戶引導工具,特別提供:

  • 2.1 最佳實踐:在銀行業的專業知識。
  • 2.2 知識分享:對在金融市場部署新技術產品的見解。

差異化價值3: 客戶可以在聘請我的服務之前衡量我的商業和技術方法,這是通過以下方式實現的:

  • 3.1 個人故事: 揭示我在銀行業技術顧問的經驗。
  • 3.2 視頻內容:通過幽默講故事。

考慮到這些差異化價值,我的部落格與包括以下內容的框架相符:

  • A. 競爭替代方案:自己動手做。
  • B. 獨特屬性:簡潔、有價值的部落格文章。
  • C. 差異化價值:專門知識和思想領導。
  • D. 最佳適合的客戶:金融科技創業公司的A輪和B輪CEO。
  • E. 市場類別:為金融公司提供技術諮詢。

至於下一步,我計劃:

2022年4月

  • 更新我的網站上的登陸頁面信息。
  • 增加更多的案例研究。
  • 與前五名客戶進行訪談以微調訊息。

2022年5月

  • 創建專注於技術諮詢的銷售話語。
  • 回應提案請求(RFPs)。
  • 在我的部落格上增加更多的科技和商業內容以提高品牌知名度。

總的來說,我正在重新定位為金融公司的專門技術顧問。借助經過驗證的敏捷方法,我目標是幫助這些公司設計和開發提高業務績效的軟體解決方案。我的服務範疇從為初創公司開發軟體,到為較大的科技公司提供咨詢,以及定制產品管理。欲了解更多信息,請訪問 https://victorleungtw.com/

歡迎隨時聯繫,討論我如何在商業和科技方面幫助您的團隊。

Connecting Apache Kafka to Azure Event Hubs

Recently, I worked on an integration with Azure Event Hubs. A colleague of mine faced challenges while trying to export messages from an existing Kafka topic and import them into Event Hubs. To assist, I've documented the steps below, which you may find useful.

Step 1: Download and Extract Apache Kafka

Apache Kafka is an open-source, distributed event streaming platform. It facilitates the construction of distributed systems and ensures high throughput. You can download Apache Kafka from the following link: Apache Kafka Download

tar -xzf kafka_2.13-3.1.0.tgz
cd kafka_2.13-3.1.0

Step 2: Start the Kafka Environment

Ensure that Java 8 or higher is already installed in your local environment. If not, download and install it from Oracle's website.

To start all services, execute the following commands:

Start the ZooKeeper service:

bin/zookeeper-server-start.sh config/zookeeper.properties

Start the Kafka broker:

bin/kafka-server-start.sh config/server.properties

Step 3: Create and Set Up Configuration Files

Create a new file named connector.properties with the values below:

... (The content is mostly fine and technical, no changes)

Replace the placeholder values with those from your Azure endpoint. If you haven't already, create a new namespace and deploy Event Hubs resources from the Azure portal. Note that you might need to select the Standard pricing tier or higher to successfully create Kafka topics in the next step.

The required password can be found in the Shared access policies settings of the Event Hub namespace, under the SAS Policy labeled RootManageSharedAccessKey.

Step 4: Create Three Kafka Topics

To create the topics manually, use the kafka-topics commands:

Create the configs topic:

... (Commands are mostly fine and technical, no changes)

Create the offsets topic:

... (Commands are mostly fine and technical, no changes)

Create the status topic:

... (Commands are mostly fine and technical, no changes)

Step 5: Run Kafka Connect

Kafka Connect is a tool for reliably and scalably streaming data between Apache Kafka and Azure Event Hubs. To continuously import and export your data, start the worker locally in distributed mode.

bin/connect-distributed.sh path/to/connect-distributed.properties

With everything set up, you can proceed to test import and export functions.

Step 6: Create Input and Output Files

Create a directory and two files: one for seed data to be read by the FileStreamSource connector and another to be written to by the FileStreamSink connector.

mkdir ~/connect-demo
seq 1000 > ~/connect-demo/input.txt
touch ~/connect-demo/output.txt

Step 7: Create FileStreamSource Connector

Next, let me guide you through launching the FileStreamSource connector:

... (Commands are mostly fine and technical, no changes)

Step 8: Create FileStreamSink Connector

Similarly, let's proceed to launch the FileStreamSink connector:

... (Commands are mostly fine and technical, no changes)

Finally, confirm that the data has been replicated between files and is identical.

cat ~/connect-demo/output.txt

You should see that the output.txt file contains numbers from 1 to 1000, just like the input.txt file. That's it! If you update input.txt, output.txt will sync accordingly.

Please note that Azure Event Hubs' support for the Kafka Connect API is still in public preview. The FileStreamSource and FileStreamSink connectors deployed are not intended for production use and should only be used for demonstration purposes.

Connecting Apache Kafka to Azure Event Hubs

Welcome to "Continuous Improvement," the podcast where we explore strategies, tips, and tricks to enhance your productivity and solve technical challenges. I'm your host, Victor, and in today's episode, we'll be discussing how to integrate Azure Event Hubs with Apache Kafka.

But before we dive in, I want to give a shoutout to our sponsor, Acme Software Solutions. Acme is a leading provider of enterprise integration tools and services, helping businesses streamline their workflows and maximize efficiency. Check them out at acmesoftware.com for all your integration needs.

Now, let's get started. Recently, I had the chance to work on an integration project involving Azure Event Hubs and Kafka. A colleague of mine faced some hurdles while trying to export messages from an existing Kafka topic and import them into Event Hubs. To help others who might encounter similar issues, I thought it would be valuable to share the steps I took to overcome these challenges.

So, let's jump into the step-by-step process.

Step 1: Download and Extract Apache Kafka. Apache Kafka is an open-source, distributed event streaming platform that enables the construction of distributed systems with high throughput. You can download the latest version of Apache Kafka from their website.

Step 2: Start the Kafka Environment. Ensure that you have Java 8 or higher installed in your local environment. To start all the Kafka services, execute the provided shell commands.

Step 3: Create and Set Up Configuration Files. Create a new configuration file with the necessary properties and replace the placeholder values with the details from your Azure endpoint. Don't forget to retrieve the required password from the Event Hub namespace settings.

Step 4: Create Three Kafka Topics. Use the provided "kafka-topics" commands to manually create the required topics.

Step 5: Run Kafka Connect. Kafka Connect is a powerful tool to stream data between Apache Kafka and Azure Event Hubs. Start the Kafka Connect worker in distributed mode.

Step 6: Create Input and Output Files. Set up the input and output files that will be used for testing purposes. These files will be read by the FileStreamSource and written to by the FileStreamSink connector.

Step 7: Create FileStreamSource Connector. Launch the FileStreamSource connector using the provided commands to start importing data from Kafka to Event Hubs.

Step 8: Create FileStreamSink Connector. Follow the instructions to set up the FileStreamSink connector, which will export data from Event Hubs back to Kafka.

Finally, confirm that the data has been replicated between the input and output files. You should see that the output file contains the same data as the input file, confirming the successful integration between Kafka and Event Hubs.

Before we end today's episode, I must emphasize that the support for Azure Event Hubs' Kafka Connect API is still in public preview. The FileStreamSource and FileStreamSink connectors deployed here are intended for demonstration purposes and not for production use.

I hope you found this episode helpful in understanding how to integrate Azure Event Hubs with Apache Kafka. If you have any questions or would like to suggest topics for future episodes, feel free to reach out to me on Twitter @VictorCI. Don't forget to subscribe to "Continuous Improvement" on your favorite podcast platform so you never miss an episode.

That's all for today. Until next time, keep improving and stay productive!

Disclaimer: The information provided in this episode is based on personal experiences and should not be considered as professional advice. Always consult with experts and refer to official documentation for accurate guidance.

將Apache Kafka連接到Azure事件中樞

最近,我在與Azure事件中心的整合中進行了一些工作。我的一位同事在嘗試將消息從現有的Kafka主題中導出並導入到事件中心時遇到了困難。為了提供協助,我在下文中記錄了所謂的步驟,你可能會發現這很有用。

第一步:下載並提取Apache Kafka

Apache Kafka是一個開源的、分佈式的事件流平台。它促進了分佈式系統的構建並確保了高吞吐量。你可以從以下的鏈接下載Apache Kafka:Apache Kafka下載

tar -xzf kafka_2.13-3.1.0.tgz
cd kafka_2.13-3.1.0

第二步:啟動Kafka環境

確保Java 8或更高版本已經安裝在你的本地環境中。如果沒有,請從Oracle的網站下載並安裝。

執行以下命令以開始所有服務:

開始ZooKeeper服務:

bin/zookeeper-server-start.sh config/zookeeper.properties

開始Kafka經紀人:

bin/kafka-server-start.sh config/server.properties

第三步:創建並設置配置文件

創建一個名為connector.properties的新文件,並下列的值:

... (內容主要正確且技術含義實在, 無需改動)

用您的Azure端點的值替換佔位符值。如果您還沒有,請從Azure門戶網站創建一個新的命名空間並部署事件中樞資源。請注意,您可能需要選擇Standard或更高的定價層級,以成功在下一步中創建Kafka主題。

所需的密碼可以在事件中樞命名空間的Shared access policies設置中找到,位於稱為RootManageSharedAccessKey的SAS策略下。

第四步:創建三個Kafka主題

要手動創建主題,請使用kafka-topics命令:

創建configs主題:

... (命令主要正確且技術含義實在, 無需改動)

創建offsets主題:

... (命令主要正確且技術含義實在, 無需改動)

創建status主題:

... (命令主要正確且技術含義實在, 無需改動)

第五步:運行Kafka Connect

Kafka Connect是一種可靠且具有擴展性的数据流工具,用於Apache Kafka和Azure Event Hubs之間。要持續地導入和導出你的數據,請在本地以分佈式模式開始工作人員。

bin/connect-distributed.sh path/to/connect-distributed.properties

設置好所有的內容後,你可以繼續測試導入和導出功能。

第六步:創建輸入和輸出文件

創建一個目錄和兩個文件:一個用於FileStreamSource連接器讀取的種子數據,另一個用於FileStreamSink連接器寫入的文件。

mkdir ~/connect-demo
seq 1000 > ~/connect-demo/input.txt
touch ~/connect-demo/output.txt

第七步:創建FileStreamSource連接器

接下來,讓我引導你啟動FileStreamSource連接器:

... (命令主要正確且技術含義實在, 無需改動)

第八步:創建FileStreamSink連接器

同樣地,讓我們繼續啟動FileStreamSink連接器:

... (命令主要正確且技術含義實在, 無需改動)

最後,確認數據已經在文件之間復制並且是相同的。

cat ~/connect-demo/output.txt

你應該會看到output.txt文件包含從1到1000的數字,就像input.txt文件一樣。就是這樣!如果你更新input.txtoutput.txt將相應地同步。

請注意,Azure事件中樞對Kafka Connect API的支持仍處於公共預覽階段。已部署的FileStreamSource和FileStreamSink連接器不適合生產用途,只應用於演示目的。

Product Engagement Strategy

I recently took a class on the Psychology of Engagement, where I learned the methodologies and vocabulary needed to create highly engaging products. I am applying these concepts to a product of my choosing.

One product that has me "hooked" is an app I use daily to manage my savings and investments. The intended behavior of this product is to encourage users to deposit and save money. I find it rewarding to check my account balance every night and see my progress. The internal trigger driving my engagement with this product is my goal of achieving financial freedom.

I currently work at Thought Machine, a product company that has developed a core banking product aimed at transforming the banking industry. This product empowers banks to offer innovative financial services to their customers. We recently raised $200 million in our Series C funding round, backed by industry-leading venture capitalists and major global banks like Nyca Partners, Molten Ventures, JPMorgan, and Standard Chartered. This has brought our total funding to $350 million, valuing the company at over £1 billion.

According to customer feedback, banks are enamored with our Vault product. It's a ledger system that operates on cloud-native platforms like Amazon Web Services, Google Cloud Platform, and Microsoft Azure, without relying on legacy technology. Vault can be configured through Smart Contracts to run any type of retail banking product, such as checking accounts, savings accounts, loans, credit cards, and mortgages. However, bank customers often find it easy to spend money but difficult to save.

To identify behaviors with strong habit-forming potential, I've utilized "habit zones." Here are three behaviors my company could focus on:

  • Behavior 1: Spending money (e.g., paying monthly rent through a checking account)
  • Behavior 2: Saving money (e.g., accruing daily interest in a savings account)
  • Behavior 3: Borrowing money (e.g., using a credit card that offers reward points or taking out a personal loan)

Based on my personal experience, the behavior with the greatest habit-forming potential is saving money while monitoring daily interest accruals.

To better understand this behavior, I asked myself "why?" five times:

  1. Why? Because I want to check my bank account for daily interest accrual.
  2. Why? To monitor my progress and see how much interest has accumulated.
  3. Why? To gauge whether I am saving enough to meet my financial goals.
  4. Why? Because I fear not having enough money for significant life events like a wedding.
  5. Why? Due to uncertainties about the future, I feel more secure with a financial cushion for emergencies.

I then applied the 5 Panels framework to design an external trigger that cues customers to perform the intended behavior.

Persona:

  • Characteristics: Alex is a 34-year-old working professional in Singapore.
  • Values: Enjoys life, loves coffee, cars, and cooking.
  • Needs: To pay for a wedding, purchase a car, repay loans, buy a coffee machine.
  • Constraints: Faces high inflation, has no savings, and spends his entire monthly salary.

Internal Trigger: Alex wants to start saving money while controlling his expenses. He feels anxious about not being able to afford his upcoming wedding.

Context: Alex is discussing wedding plans and finances with Melanie at a coffee shop. During the conversation, he mentions a car he wishes to purchase.

External Trigger: Alex feels social pressure as his peers are getting married and starting families.

Association: Fear of not saving enough for the wedding = Checking bank account for daily interest accrual.

Action Phase: Steps and hurdles a customer faces:

  1. Receive salary: Financial commitment towards monthly rent and loan repayment.
  2. Allocate 10% for savings: Monetary discipline required, can't spend that money now.
  3. Log into the bank account: Physical effort needed to open the app and click.
  4. Transfer money to the savings account: Another click required.
  5. Wait for the next day: Time needed to see any significant interest accrual.
  6. Verify daily interest accrual: Cognitive load to check if the amount is correct.
  7. Resist temptation: Numerous reasons may tempt the user to withdraw the saved money.

From the customer's perspective, the most challenging hurdle is to allocate 10% of income for savings.

User Story: As a working professional, I find it difficult to save money because of my many expenses and loan repayments. To save, I need to cut back on unnecessary spending and determine a savings target.

Solution Description: Through daily interest accrual, our app can reward users for saving. It can project future savings and interest accruals, enabling customers to set aside money more effectively. The app can also tailor its services based on the user's risk profile and savings goals.

Engagement Strategy:

  • Trigger: Notification reminders to allocate money for savings, along with projections for future account balances.
  • Action: Schedule automatic transfers to a savings account and view daily interest accruals.
  • Variable Rewards: Offer a sense of achievement as users get closer to their financial goals. Provide tips on saving money and reducing daily expenses, along with cash back offers and discount notifications.
  • Investment: Incentivize users to refer friends, which earns them a higher interest rate on their savings account.

Strategic Priorities: The next step for Thought Machine is to enhance user engagement by offering more rewarding incentives for saving money.

KPIs:

  • Number of reminder notifications sent
  • Number of new savings accounts opened through referrals
  • Total amount of interest paid to customer savings accounts

Conclusion: The Hooked Model is a powerful framework that synthesizes decades of research into a simple four-phase process. By understanding and applying these principles, we can encourage more people to save money effectively and ethically through our product design.

Product Engagement Strategy

Welcome to "Continuous Improvement," the podcast where we explore strategies and techniques to enhance our daily lives and achieve our goals. I'm your host, Victor, and today we'll dive into the captivating world of product design and the psychology of engagement.

Hello, listeners! I recently attended a class on the Psychology of Engagement, and I am thrilled to share what I've learned with all of you. In this episode, I'll be applying these concepts to a product that has caught my attention—an app I use daily to manage my savings and investments. But before we dive in, let's talk about the company I work for, Thought Machine.

Thought Machine is a cutting-edge product company revolutionizing the banking industry. We recently raised a staggering $200 million in our Series C funding round, backed by top venture capitalists and renowned global banks, including Nyca Partners, Molten Ventures, JPMorgan, and Standard Chartered. Our core banking product, called Vault, is a game-changer for banks across the globe.

Now, back to the app that has captivated me—the one I use to manage my savings. Its intended behavior is to encourage users to deposit and save money. I find it incredibly rewarding to check my account balance every night and see my progress toward financial freedom. The internal trigger that drives my engagement with this app is my goal of achieving financial security and independence.

To optimize user behavior, I've employed the concept of "habit zones" and identified three key behaviors my company could focus on: spending money, saving money, and borrowing money. After careful consideration, I realized that the behavior with the greatest habit-forming potential is saving money while monitoring daily interest accruals.

To better understand why this behavior is so impactful, I asked myself "why" five times. The answer lies in our need for financial security and the fear of not having enough for significant life events. By checking our daily interest accruals, we can gauge whether we are saving enough to meet our financial goals and protect ourselves from future uncertainties.

To design an external trigger that cues customers to perform this behavior, I applied the 5 Panels framework. Let me introduce you to our persona—an individual named Alex. Alex is a 34-year-old working professional in Singapore, and he wants to start saving money while controlling his expenses. He feels anxious about not being able to afford his upcoming wedding.

Now, imagine Alex discussing wedding plans and finances with Melanie at a coffee shop. During their conversation, he mentions his desire to purchase a car as well. Alex feels social pressure as his peers are getting married and starting families. These external triggers compel Alex to monitor his savings account for daily interest accruals, associating it with his fear of not saving enough for his wedding.

However, as we know, translating behavior into action isn't always straightforward. There are steps and hurdles customers face along the way. For Alex, these include receiving his salary, allocating a portion to savings, logging into the app, transferring money to a savings account, waiting for the next day to see significant interest accrual, verifying the daily interest amount, and resisting the temptation to withdraw his savings.

Albeit challenging, the most significant hurdle for Alex is allocating a portion of his income for savings. To address this, we need to offer a solution that provides the necessary monetary discipline while catering to his individual needs and desires.

Our user story for Alex goes like this: Alex, a working professional burdened by various expenses and loan repayments, finds it difficult to save money. To overcome this, he needs to cut back on unnecessary spending and determine a reasonable savings target. Our solution is to develop an app that rewards users for saving through daily interest accruals. This app will project future savings and interest amounts, helping users set aside money more effectively. Additionally, it will provide tailored services based on the user's risk profile and savings goals.

And now, let's talk about our engagement strategy. To drive and sustain user engagement, we need to employ various techniques. We'll send notification reminders, encouraging users to allocate money for savings while providing projections of their future account balances. We'll also allow for automatic transfers to a savings account, so users can effortlessly save. Variable rewards, such as a sense of achievement, saving tips, and cashback offers, will further motivate users to stay engaged. Additionally, we'll incentivize users to refer their friends, earning them a higher interest rate on their savings account.

Our strategic priorities at Thought Machine involve enhancing user engagement by offering more rewarding incentives for saving money, ensuring a smooth user experience, and continuously improving our app based on customer feedback.

To measure the success of our efforts, we've identified key performance indicators (KPIs). We'll track the number of reminder notifications sent, the number of new savings accounts opened through referrals, and the total amount of interest paid to customer savings accounts.

In conclusion, the Hooked Model is an exceptional framework that synthesizes decades of research into a simple four-phase process. By understanding and applying these principles, we can encourage more people to save money effectively and ethically through our product design.

Thank you for joining me today on "Continuous Improvement." I hope you found this exploration of the psychology of engagement and product design insightful. Remember, continuous improvement is the key to achieving our goals. Stay tuned for more episodes where we'll delve into different topics to help you optimize your life.

This has been "Continuous Improvement." I'm Victor, your host, and until next time, keep striving for continuous improvement.