Contributor Interviews – Jay Pfaffman

Every week, we’ll be posting an interview with one of our many beloved contributors here on Meta. Find them all in user-interviews. This week:

Jay Pfaffman @pfaffman

Tell us a bit about yourself!

Location: Reno, Nevada, USA

In my last life, I was a college professor who taught future and current teachers to use computers to support their teaching. I thought and taught that Open Source Software was important for education (e.g., It’s time to consider Open Source Software). Before that, I was an early adopter of Linux and once ported Sendmail, UUCP, and a couple different mailing list managers to Linux to run a mailing list for about 600 English teachers over a dial-up link.

I play guitar, though haven’t much lately, and plan to ski this season, as Lake Tahoe is less than an hour away. I spend the vast preponderance of my time doing stuff with Discourse these days. I’ve always liked managing computers and now I get paid for it.

How did you first find out about Discourse?

I was unhappy with the Learning Management System that my last university used and thought that I wanted something like Stack Exchange to support students learning about various computer applications in my classes. Somehow I found Discourse, and adopted it as a way to teach my classes.

What are you using Discourse for?

I do Discourse training, support, installations, and imports full time. I have a Discourse instance that I’ve been using as a means to keep track of what I need to do for my clients, and a tiny instance that I’ve been using with my family. Meta is the Discourse instance that I use the most.

How did you get so involved in the Meta community?

I’ve always been a big Open Source Software advocate and liked the community when I started using Discourse and wanted to give back. About a year ago, I left my faculty job for my wife to take hers and started doing Discourse consulting full time. @codinghorror handed over the $99 community install business to me, and on I’ve gone.

What compels you to contribute to Discourse?

I’ve always been interested in helping those who aren’t “good at” computers learn to use them. Discourse gives me a new way to do that.

Tell us about a non-Discourse community that you’re involved in!

I’m still new in Reno and don’t have much community here, though I have recently joined a wine tasting group.

What kind of significance does the open source movement have to you?

When I was teaching educators how to use computers in their classrooms I was a staunch advocate for Open Source Software. When teachers are spending a bunch of money out of their own pockets for copy paper, I thought it all the more importer for them not to spend money on software. Software, unlike diamonds, is more valuable the more people who have it. I know many people who use a certain very popular word processor primarily because the people that they collaborate with use it. (I can’t stand word processors and use Markdown, LaTeX org-mode and LaTeX pretty much exclusively.) I used to make moral arguments about why schools should adopt and embrace OSS, but no one really listened.

What has been the greatest challenge in learning about Discourse and its community?

It took me a very long time to figure out the multi-container config.
It took me a very, very, very long time to figure out multisite.

Any ideas on how to improve the Meta community?

  • No good place for real RTFM questions, which is compounded by the fact that there’s no FM.
  • Perhaps there should be a “newbie” category (probably with a better name), where people could ask rudimentary questions like “How do I control access to categories” with impunity. That’d offer a place where nearly-new members could provide useful help.

Any advice to future contributors?

My current peeve is people who ask a zillion questions about Discourse before installing it. My advice is to just do it.

I think there’s a big need now for some documentation, so even if you’re not a programmer, you can help out by creating tutorials or other kinds of documentation to help new administrators figure out the basics.

I’d love to see a small suite of proof-of-concept plugins that include just enough to demonstrate overriding a particular thing. This could be a good project for someone just starting out with writing plugins.

62 个赞

And, that’s an outstanding tie you’ve got on there Dr!

5 个赞

Such an inspiration @pfaffman Your advices have been real help at times!

1 个赞

All of this, YES, please

6 个赞

I totally agree here, still, I’ve found it really hard to document every single piece of a web application. Such “handbooks” do not really exist in the wild, and are really hard to maintain. Still, I would believe that a general “how to start and administrate things” documentation should exist on Github. It not so easy to find everything from the very beginning, you need to know your Google foo. The main thing which did hold me off for like some months was that I did not understand why I would need Docker, and “JFDI”. I’ll take note to send in some PRs, I love to write Markdown docs :slight_smile:

In terms of plugins, I know that feeling. We tend to have the same problem with Icinga Web 2 modules, where the “easy to start with” module doesn’t exist, and many do look into existing modules. Which are overly complex. Starting with Discourse plugins just for the fun and pride is one of the things I’d like to try, maybe also sort of prototype and guided by the main devs. It only is - as always - a matter of time :slight_smile: Cannot make a promise here, still I think this software and community deserves a warm “giving back” :slight_smile:

Kind regards,
Michael

6 个赞

@pfaffman Hear hear! The more computer literacy in the world, the better.

Totally, understand if you don’t want to answer this, but do you happen to keep demographic stats on your clients? I’m just curious what kind of folks are using Discourse.

6 个赞

I don’t keep stats on locations, I often don’t know. They’re from all over the world, though. Great Britain, Poland, the US, various countries in South America, and a few from New Zealand and our Australia.

Almost everything is via email or discourse. A few folks I’ve talked to via phone or video conference. Only one client have I laid eyes on.

8 个赞

This has been a long time coming. As I keep coming here to post and then get distracted.

@pfaffman, you have done a lot for the Discourse Community. The work you put into discourse-setup alone is note worthy, let alone the importer work you have done as well.

It doesn’t take much to figure out why Discourse would hand you their $99 install business and why many of us here will consistently recommend your services to those looking for it.

One of these days I’d love to hear more about your automation process, not the entire how, as surely you should be able to keep your edge, but more of what tooling is involved, how you got interested in it, and so forth. I think that would make for a really interesting read.

Thanks for taking time to put in an effort to this project, your contributions have really helped shape the installation process and those who have to migrate from one forum to another.

16 个赞

Hey @pfaffman,

I think you should raise your Discourse installation fee from $99 to something closer to $150.

Alright, that’s all I have to say (me thinks I’m not going to get a lot of likes for this… ).

But seriously, $150.

2 个赞

Thanks, @jaevanryssel. You’re not the first to suggest that the price is too low. And, it is $150 with https. And I don’t get but about 8/month (which was the same that CDCK was getting before they handed it over to me). I’ve actually considered reducing the price. If reducing the price to $50 would get me 50/month, it’d be totally worth it for me. An install takes me under a minute. (But I’ve spent more hours than I care to admit getting it to that point!)

Real Soon Now I hope to have a fully automated install available, but I keep finding other things to work on.

17 个赞

I suspect that this would not be effective – if your work is good, charge more, not less!

10 个赞

Well, I don’t have the time to write up what I think you’re asking for, but here’s what happens. When an order is placed, I get an email that has something like this:

export NAME="Pat Doe"
export EMAIL="user@gmail.com"
export DO_HOSTNAME="forum.mysite.com"
export DO_API_KEY="thediscoursekey"
export MG_API_KEY="key-mailgunkey"
cd ~/src/discourse-installer
irb
load 'do-create-droplet'
d=DOManager.new
d.do_create_droplet("forum.mysite.com", 'nyc3', '1gb')
sleep 45
d.install_discourse

I copy and paste that into a shell. I don’t just have that in a single shell script, because if something goes wrong, I can do some stuff in my little Ruby class to fix it up.

do_create_droplet, as the name implies, creates the droplet, and adds those DNS records to the Digital Ocean DNS. If the client uses Digital Ocean as their DNS provider, all of the DNS stuff (including what Mailgun requires) happens automatically, and https gets enabled and the Mailgun domain gets verified. This isn’t advertised because I’m afraid that someone will break all their sites changing to DO’s name servers. For sites that I set up for myself, the whole thing is entirely automated.

install_discourse does what you might guess, but it also uses the Mailgun API to create the domain and get the SMTP user and password to generate an install script that

  • installs docker
  • does an apt upgrade
  • sets a root password
  • enables automatic upgrades with automatic reboot
  • turns off transparent_hugepage
  • installs git
  • installs Digital Ocean’s monitoring stuff
  • runs discourse-setup, piping in all the values as if someone had typed them.
  • reboots

The script is copied to the server and then run.

When it’s done, an email is generated with all of the DNS stuff that mailgun wants and puts it in a table with instructions that most people can follow.

The DNS settings table includes links to test the settings with G Suite Toolbox; there is also an API URL that allows the logs to be checked without logging in to Mailgun. If they do have trouble, I can generally figure out what the problem is with only what’s in the email they get.

If something goes wrong during the install, my ruby class also allows stuff like delete the droplet and start over. I also have functions to do things like:

  • discourse_to_8080(hostname = @hostname)
  • manager_install_apache
  • install_mysql(_server_ip = do_server_ip, lc_user = @lc_user)
  • create_user(_server_ip = do_server_ip, user = @lc_user)
  • install_wordpress_domain(hostname, _database, _server_ip = do_server_ip)

A feature I just added that I’m happy about is that I start monitoring the site with uptimerobot. This way I get a notification once they set up DNS and I can follow up if there’s some need to do so.

One day, Real Soon Now, I’ll finish the rails app that will let this stuff happen without my intervention.

25 个赞

That actually was good enough, enough of a teaser to show the ability of it, with enough of the technical chops hidden about it.

This was actually all I was looking for, was a glimpse into what you were doing, I knew you had automated the process, but wasn’t really aware of how much so.

Thanks for the peek into your process.

8 个赞

I’m not good at computers! Jay just helped me set Discourse up in a droplet on Digital Ocean and configure my GoDaddy DNS records for my primary domain to use Mailgun. Thank you Jay! Thank you Discourse for this contributor interview.

11 个赞

我认为调整价格以找到一个合适的价位是明智的。这个价位可能会上调,但我预计它应该会低于您当前的价格。

我不记得见过有人提供能够估算需求曲线的数据。如果存在这样的数据,它或许能指出最适合您的价格点。您可以尝试发放一段时间的“折扣券”,从而生成一个新的数据点。

同样有用的信息是了解您的竞争对手是谁,以及潜在客户如何看待您的定价?就我自己的经验而言,当自行安装的服务器出现邮件或 DNS 问题时,您服务的价值就会提升。但还有其他选择,例如 Communiteq(前身为 DiscourseHosting)。我特别记得当时觉得 Communiteq(前身为 DiscourseHosting)的前期成本远低于 99 美元,因此我怀疑有些人选择这条路径仅仅是因为阻力更小,且无需支付一次性安装费用。

当付款货币与美元不具平价时,心理门槛会稍高一些。我的货币价值约为美元的 3/4,因此 75 美元会更具吸引力,仅仅是因为它能将价格降至 100 新西兰元以下。

另一组有用的数据是关于初始安装如何转化为后续业务。如果您了解这一点,就能为估算安装后的额外收入设定一个上限。

真正困难的部分在于估算降低价格如何加速 Discourse 的采用。您的边际成本现在非常低,因此大幅降价最终可能会带来加速的势头,因为客户会主动向他人推荐您。

我想您应该已经意识到所有这些。因此,我主要在此提出这些观点,作为对“溢价定价”等策略的补充,后者往往较少关注为客户提供的价值:

3 个赞