2019年9月24日星期二

如何让 MailChimp 订阅对话框在点击时弹出

问题描述

我的博客提供 MailChimp 订阅,大家点击订阅链接后需要转跳到 MailChimp 的页面输入 email。MailChimp 官方提供直接嵌入在网页内的订阅对话框,我希望读者在博客上点击订阅链接后直接打开对话框,让订阅流程变得更顺畅,这样可能能够提高订阅率。(为了保持兼容性,如果读者在 RSS 阅读器或邮件内点击订阅链接,则还是正常打开订阅页面。)

问题在于 MailChimp 官方不提供订阅对话框通过点击触发的选项。对话框的触发条件只有简单的几种:页面加载后弹出、用户滚动到页面底部时弹出……(可能 MailChimp 是设计给非程序员用的,所以不提供任何需要写点代码才能完成的整合,只提供包装好简单易用的方案。)为此,我需要修改 MailChimp 官方提供的对话框嵌入代码,使得它能在订阅链接点击时触发。

解决方案

MailChimp 提供的嵌入代码包含两个 <script> 标签。第一个 <script> 标签不需要做改动,第二个 <script> 标签需要把内含的代码需要嵌入到一个函数中去,然后就可以在链接的点击事件里通过调用这个函数触发订阅对话框了。以下是参考代码:

在上述代码中,我没有改动第一个<script> 标签,第二个<script> 标签里面有一个函数,第三个 <script> 标签对页面上的订阅链接添加点击事件响应函数并在那里调用第二个 <script> 标签里定义的函数。

第二个 <script> 标签里定义的函数,包含了 MailChimp 官方提供的代码中的 window.dojoRequire(...) 这一行。如果你要使用我的代码,你必须把这一行替换成 MailChimp 给你的同一行代码,然后才会显示你的对话框而不是我的对话框。

在这一行前面,我插入了两行代码用来删除 MailChimp 会插入的两个 cookie:一个是在用户关闭对话框后加入,另一个是在用户订阅后加入。只要有这两个 cookie 中的一个,对话框就不再显示。这对页面打开就触发的订阅对话框来说是合理的,谁也不希望每次打开页面都会看到对话框弹出。但如果用户主动点击链接,则应该总是打开对话框。为此我们要删除上述两个 cookie,保证对话框总是能打开。

第三个 <script> 标签是针对我的博客定制的,并不适用于其它人。我在我的博客页面内寻找所有指向我 MailChimp 订阅页面的链接,然后绑定这些链接的点击事件。用户点击链接的话,就调用第二给 <script> 标签内的函数,打开对话框,同时取消正常链接点击带来的页面转跳。

如果你想测试一下这项功能,请点击邮件订阅链接。如果你是在博客上阅读本文的话,应该会看到对话框。对话框打开后,记得输入 email 然后订阅哦!

2019年9月14日星期六

Career Coaching 名额报满

Career Coaching 名额报满

我从 2018 年 4 月开始用 Patreon,一开始就设立了两档服务,包括 $100 一个小时的 career coaching 服务。我在 2018 年 6 月有了第一个学生,接下来花了一年多的时间,到 2019 年 9 月才把我的五个学生名额招满。我在 9 月 10 日晚上发了一条 tweet,说我又开了五个新的名额,只是打折少了,价格提高到 $150 一个小时。(我在知乎上也发了同一条消息。)

完全出乎我意料之外的是,在短短的 24 个小时之内,这五个名额就被报满了!这真的是让我非常的震惊,因为上一批的五个名额花了一年多才被报满,就算用户增长存在加速度,也应该要花好几个月才会被报满啊。我完全没有预料到用户增长的加速度会如何巨大!

超级感谢大家对我 career coaching 项目的支持,尤其是学生们对我的支持,这包括想报名但这次没有抢到名额的学生们。没有大家的支持,就没有这个项目的快速成长。在这个项目上,我有机会接触到大家在 career 不同阶段遇到的问题,然后尝试为跟大家一起解决这些问题,这其实是非常有意思。

接下来我会花一段时间来观察迅速增加无名学生对我时间开销的影响,然后再决定是否能够开放更多名额以及开放多少名额。如果你想报名但没抢到名额,欢迎你到 Patreon 上来 follow 我,保证我开放新名额是你能够第一时间获取到资讯。此外,通过邮件RSS/Atom 订阅我的博客也能收到消息。

2019年9月13日星期五

博客文章阅读分析

最近在和朋友研究做什么样的 podcast(纯音频)节目内容合适,于是分析了一下自己曾经写过的内容哪些比较热门。以下是对我博客园文章的分析,之所以用博客园,是因为那里的人气最旺,所以统计数字更可靠。


首先我们看一下阅读数量的前十:

我们可以粗略看看这返影读者的什么倾向:首先,读者都比较关心跟自己职业发展相关的话题,所以面试和职业发展路线的文章能够排到前面,擦边相关的英语也正好能上榜。其实,读者对大公司比较好奇,所以头四篇都是讲不同公司面试风格和体验的。最后,科普型的技术内容也偶尔能吸引大量阅读。


接下来我们再看看评论数量的前十:

这跟阅读数量的前十有 40% 的重合,意味着这两者存在一定的相关性。从标题上来看,能够刺激用户评论的往往是具备争议性的话题:要么我直接抛出一个非常逆主流的观点,要么我提一个宽广的问题。这两者都能很好地刺激读者通过评论发表他们自己的观点,前者会带出主流观点来和我争论,后者会给每个人空间来陈述他们独有的经历。总的来说,其实很多读者是有自己的观点的,文章更多是设立一个巨大的舞台,让读者觉得自己的观点是相关的,于是上来展现自己的观点。


综上所述,要吸引读者阅读和评论,内容最好能覆盖到以下一个或多个要素:

  • 跟读者职业发展相关
  • 满足读者对行业(尤其是大公司)的好奇心
  • 科普型的信息
  • 逆主流(contrarian)的观点
  • 广阔的话题

这会成为接下来我们研究 podcast 节目方向的依据。如果你好奇我们在做什么 podcast,或想在我们发布后第一时间知道,欢迎通过邮件RSS/Atom 订阅我的博客。

2019年9月12日星期四

《牛油果烤面包》播客开播!

我跟朋友做了一个播客,名叫《牛油果烤面包》。我们两个主持人都是湾区科技行业工作者,我们喜欢在一起聊聊现在的行业趋势,于是我们开了一个播客跟大家一起聊。

我们的第一期节目趁着 Apple Special Event 发布,聊聊我们对 Apple 新品的看法,顺便蹭个热点。以下是我们这一期节目,欢迎直接点击收听。如果你喜欢的话,请记得订阅哦,我们下周就会发布第二期节目。

如果你使用 Spotify,也可以在 Spotify 内收听,这样会更方便你订阅及在通勤时收听。如果你使用其它 podcast apps,你可以直接通过《牛油果烤面包》的 RSS 进行订阅,主流的 podcast apps 都支持手工添加 RSS 进行订阅。(此时此刻,我们的节目还不能在各大 podcast 平台内搜索到,因为这些平台的发布和审核需要时间。)


说一下我们这个《牛油果烤面包》这个节目背后的故事吧,首先说说这个名字是怎么来的。我们昨天刚刚录制了第一期节目其实不是原计划的第一期话题,而是我突发选择的 Apple Special Event 蹭热点节目。我们在吃早餐时还没定下来名字,于是我朋友就说:「既然要讲 Apple,我们就学习 Apple 当初命名的方式来为我们的节目命名吧。你刚才点了什么?」我刚刚点了一个 advocado toast,于是我们就有了《牛油果烤面包》这样的名字。

我们在订好名字之后,我就决定要搞一个 advocado toast 的封面。我有两个想法,一个是拍一张 advocado toast 的照片,另一个是画一个 advocado toast 样子的图标。碰巧我今天冰箱里还真有 advocado,于是我决定早餐就做一份 advocado toast 然后拍下来,这就成了我们现在封面照片。如果你要问照片里的 advocado toast 去哪里了,我会指着我的肚子说「在这里」。

为了做这个节目,我们之前做了一些研究,考察哪个播客平台更好。因为我们不确定这个节目能做多大,只是想要低成本地快速启动,所以我们选择了最近刚刚被 Spotify 收购了的 Anchor。我自己比较喜欢 Anchor 的理念:现在的云存储价格已经如此之低,每个月收你 $10 甚至更多来帮你存储和发布音频文件其实很不合理,因为这个价格远超出实际的成本,所以应该提供一个免费平台给大家发布播客,然后再通过广告或其它方式进行营收和分成。

说起来 Anchor 这个平台有点像是专门为 podcast 打造的 YouTube,首先为大家提供免费的工具和存储空间,鼓励大家创造内容,然后等大家有流量后再盈利和分成。跟 YouTube 起步时不一样的是,podcast 市场已经有非常多固定的玩法,例如主流的 podcast apps 都有自己的内容平台,你自己默默发布一个新的节目别人都不会收录自然也就没有听众。Anchor 为了解决这个问题,提供自动发布到各个平台的功能。这个功能好不好用暂时还不知道,因为各个平台都要独立审核新节目,尽管 Anchor 已经把我的节目推给这些平台了,但现在还没有审核结果也不知道是否会出问题。(由于此时此刻除 Spotify 外各大平台还没有收录我们的节目,所以还是要麻烦大家手动订阅 RSS。)

Anchor 的坏处是不支持团队播客,也就是说不能几个个人帐号共同管理一个节目。Anchor 必须是一个帐号就一个节目,为此我们专门注册了一个共用的帐号来管理这个节目。如果我们以后要开更多节目的话,我们必须注册更多帐号。(希望到后 Anchor 已经支持一个帐号管理多个节目。)

当然我们先不管那么多啦,任何项目要上马都要趁着初期有势头赶紧上,希望我们能够趁着第一期节目把我们录制、编辑和发布的流程定下来,之后我们就可以重复这个流程可持续地发布节目了。等节目做得越来越好,听众越来越多了,再想办法优化流程,到时候再重新评估 Anchor 是不是最适合的平台吧。


虽然我们的节目发布在 Anchor 上,也有自己的 RSS。但我也不介意在自己的博客 RSS 上带上同样的音频内容,希望这样能让更多人接触到这期节目,希望更多人因此而选择在自己常用的 podcast app 内订阅我们的节目。如果你想要订阅我的博客本身,你可以选择通过邮件RSS/Atom 进行订阅。

2019年9月9日星期一

Echo Auto 试用体验

Echo Auto 暂时还不完全公开售卖,需要向 Amazon 申请邀请,被选中后才能购买。我 2018 年 9 月申请的,等待了差不多一年,上个月终于收到邀请了。Echo Auto 零售价为 $50,我们这种早期用户可以半价购买。

Echo Auto 的安装非常简单。它提供了夹住空调出风口的架子,其作用跟同类型的手机架差不多,直接插进空调出风口夹住就行。架子通过磁贴吸住 Android Auto,然后接上 Micro-USB 的电源就能启动了。(Echo Auto 附送上述架子、Micro-USB 电源线和一个双 USB 的车载电源。)

Echo Auto 启动后就可以跟手机上的 Alexa app进行配对了。我在这个流程中折腾了两次,第三次才搞好了。第一次,是搜了很久也没搜到 Echo Auto 这个设备。第二次,连上后 Echo Auto 会调用你的手机播放一个欢迎的音乐,这个音乐应该通过蓝牙在车载音响中播放出来,Echo Auto 听到后就能计算播放声音的延迟。因为当时我车载音响的音量不大,Echo Auto 没听清,就卡住了。第三次,我把音响调到最大,把自己吓了一跳,但终于配对通过了。

配对后 Echo Auto 会出现在 Alexa app 的 Echo 设备列表上,有意思的是 Echo Auto 被分类到「附件」那里去了,而不认为只一个独立的 Echo 设备。在使用了一段时间后,我才明白到为什么这样分类。

Echo Auto 试用体验

在汽车启动后,Echo Auto 会启动并自动通过蓝牙连接手机,之后就可以如同操作其它 Echo 设备一样用「Alexa」唤醒它并进行语音对话。跟 CarPlay 和 Android Auto 类似,这些语音对话其实都是在手机上进行处理的,需要使用网络时也都是使用手机的网络,所以本质上 Echo Auto 只是一个更好的麦克风:第一,它可以在你的手机没打开 Alexa app 的时候通过「Alexa」来唤醒;第二,它比手机的麦克风更适用于收听来自车内的语音命令。

Echo Auto 接收到指令后,后台实际处理的还是 Alexa app,本质上跟打开 Alexa app 然后进入语音界面再发布命令没有区别,但省去了上述手动步骤。在对着 Echo Auto 呼叫「Alexa」后,手机前台的 Google Maps 可以继续导航,手机后台的 Music app 可以继续播放音乐,Alexa app 会降低音乐的音量以便收听指令并播放回复。Echo Auto 的优势就在于这两个地方:第一,不需要用点击屏幕,增加驾驶安全;第二,不影响手机上正在运作的 app。


我在使用了几周之后,发现 Echo Auto 拥有一些比其它 Echo 设备要好的使用场景,但使用频率还是不够频繁。

第一类使用场景是「出门后才想起来忘记要做的事情」,例如说「灯都关了吗?」或者是「让 Roomba 吸尘吧」。这些事情可以对应的 app 来做,不过有 Echo Auto 后我喊一句就可以了,不需要在屏幕上操作。

第二类使用场景是控制音乐、podcast 和 audiobook 的播放。因为我的车没有 CarPlay 或 Android Auto,所以我通常要在开车前在手机上选好播什么。有了 Echo Auto 之后我就可以喊它来帮我了。这意味着 Echo Auto 跟 CarPlay 和 Android Auto 是直接竞争关系,如果我换一辆新车,我就不需要 Echo Auto 了。(现在也有在老车上加装 CarPlay 和 Android Auto 的模块,但价格比 Echo Auto 贵很多。)

第三类使用场景是控制导航,准确来说是查找新的导航目标。Echo Auto 可以让 Alexa app 去搜索一个新的地点,然后在 Google Maps 里面打开这个地点,但我还是需要点一下才能开始导航到这个地点。我不能使用 Echo Auto 来调整当前的导航,例如帮我在路线上搜索一个加油站,这还是要用 Google Maps 内置的 Assistant 来完成。

综上所述,Echo Auto 如果 $25 卖给那些没有 CarPlay 和 Android Auto 的车主,我觉得还是值得的。($50 就有点贵了。)现在有一个几年的窗口给 Echo Auto 发展,如果找不到跟 CarPlay 和 Android Auto 竞争的突破口,等新车都装上了 CarPlay 和 Android Auto,那 Echo Auto 就没有存在的意义了。


如果你对同类的科技产品感兴趣的话,欢迎通过邮件RSS/Atom 订阅我的博客。如果你想支持我写作的话,欢迎到 Patreon 付费,每个月 $1 就能让你提前阅读我的文章。

2019年9月7日星期六

推送的四种类型:中断、提醒、任务、垃圾

iOS push notification

一年之前我曾经在英文博客发表了一篇《Divide Notifications into Interrupt, Reminder and Backlog》,现在我觉得可以补充一下并翻译为中文版。我实际需要解决的问题是信息过载,尤其是手机上各种应用推送而来的信息。很多这些推送信息其实并不需要我实时处理,但如果它们展现的方式都如此类似的话,我就会习惯性地实时处理它们,例如说看看不重要的邮件和 Facebook 更新,结果浪费很多时间。

为了解决这个问题,我把所有的推送系统化地划分为 4 个类型:

  • 中断:我不能错过这种类型的推送,看到后可能会中断我手头上正在做的事情。这种类型的推送应该是极其罕见的。举例:关键人物发送给我的消息。
  • 提醒:在恰当的时机(例如恰当的时间和恰当的地点)提醒我做某件事情。举例:日历和待办事项的提醒。
  • 任务:可以积压的任务,不需要立即处理,甚至长时间不处理也不会有问题。举例:Facebook 内提醒和绝大多数 Gmail 的邮件。
  • 垃圾:广告之类的垃圾信息,最好完全不要出现。举例:国内应用很常见的各种活动和推广信息。

因为在 iOS 里面只能针对 app 来设置推送,所以不可能对所有的推送进行完美的分类,只可能针对 app 来做分类。我的目标是让这 4 类推送的体验产生明显地有所差别,使得我能习惯性地针对不同的推送做不同的事情:

  • 中断:iPhone 和 Apple Watch 上有声音,静音情况下有震动,未处理的话可以在应用图标上显示未读数量。
  • 提醒:iPhone 和 Apple Watch 上有声音,提醒时需要提供「snooze」按钮让我推延这个提醒。
  • 任务:iPhone 上没有声音,静音情况下不震动,不在 Apple Watch 上出现,不在应用图标上显示未读数量。
  • 垃圾:禁用推送,不显示未读数量。

做了这样的设置后,我能够减少我浪费在手机上的时间。

很多推送由于没有声音没有震动而不再可能获得我的实时关注,只有在我闲下来的时候我才会去看有什么。这对于我的一对一面谈非常有帮助,我不再会因为推送而分神,我可以专心跟别人聊完了,再回头看我收到了什么推送。如果我在一对一面谈过程中知道有新的推送,就算我不看,我也会分神去想一下这可能是什么推送,那对方的体验就很不好了。

这些同送同时由于关闭了未读数量,我不会再浪费时间去查那些有未读数量的应用,只有我真的觉得有需要从应用里面获取信息时我才会去打开它,否则我就忙别的事情去了。举例来说,我不再会因为 Facebook 或 Gmail 上显示的数字而想要打开应用,因为这个数字消失了,心里就变得平静很多。

以上是我应对信息过载的方案,如果你有不一样的方案,或者遇到了类似但又不完全一样的问题,欢迎在评论区进行讨论。如果你喜欢我写的文章,欢迎你在 Patreon 上付费支持我。如果你对我的博客感兴趣的话,欢迎通过邮件RSS/Atom 进行订阅。

2019年9月5日星期四

薅 Amazon No-Rush 羊毛

首先让我来简单介绍一下 Amazon No-Rush 是如何操作的,然后再介绍如何薅羊毛。

假设你在 Amazon 购买的商品符合免费当天、一天或两天送达,在结帐时 Amazon 会让你选择送达速度。你可以选择上述免费快速送达,但你也可以选择一个叫做 No-Rush 的选项,意思是主动放弃免费快速送达,改为需要一周时间的慢速送达。为了鼓励大家使用慢速送达,No-Rush 的选项伴随着奖励机制。只要你选择了 No-Rush,在商品发货时你可以得到对应的奖励,例如 $1 的数字商品(Kindle 书、电影等)折扣或 $5 Prime Now 折扣等。(具体你能得到哪种奖励,你需要在结帐流程时看看,每个人能得到的类型不一样。)

如果你要在 Amazon 购买多件商品,并且:

  1. 在结帐时 Amazon 显示这些商品能一起送,也就是一个 package 而不是分开多个 package。
  2. 其中至少一件商品就算单独购买也能符合免费快速送达。

这时候你可以一件一件商品分开结帐,除了上述那一件商品外其它商品都选择 No-Rush。这时候你会在 Amazon 产生多张订单,然而 Amazon 系统内部会对此进行优化,把所有的订单合并到一个 package 内,降低 Amazon 的送货成本。这个 package 内有一个商品需要快速送达,所以整个 package 会被快速送达,但你能得到其它商品的 No-Rush 奖励。

举个例子,假设你要买三件商品,它们都符合「超过 $35 就能 Free Prime Same-Day Delivery」,它们的价格分别是 $35、$25、$10。如果你可以使用 Free Prime Same-Day Delivery 购买 $35 那一件,然后剩下两件分作两张 No-Rush 的订单处理,这三件商品还是会在同一个 package 里面同一天送达,但你能赚到两个 No-Rush 奖励。

如果你对我的博客感兴趣的话,欢迎通过邮件RSS/Atom 进行订阅。如果你对这个话题有什么问题或者观点的话,欢迎对本文发表评论。