[ { "name": "email-verification", "date": "1901-01-01 00:00:00 -0600", "tags": ["email","transactional"], "expires_on": null, "valid_from": null, "draft": false, "title": "Welcome to Anvil", "subject": "Anvil account verification", "resendable": null, "priority": null, "send_interval": null, "from": null, "if": null, "category": "transactional", "plain_text": "Hi there,\n\nThanks for registering with Anvil. To get started, please click on the link below to verify your email address.\n\n%%VERIFICATION_LINK%%\n\nAll the best,\n\nThe Anvil team\n", "html": "\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\"Anvil\"
\r\n
\r\n
\r\n

Welcome to Anvil

\r\n\r\n

\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n\t
\r\n\t \r\n\t \r\n\t \r\n\t \r\n\t \r\n\t \r\n\t
\r\n\t \r\n\t
\r\n\t \r\n\t \r\n\t \r\n\t \r\n\t \r\n\t \r\n\t
\r\n\t
\r\n\t

Hi there,

\n\n

Thanks for registering with Anvil. To get started, please click on the link below to verify your email address.

\n\n

%%VERIFICATION_LINK%%

\n\n

All the best,

\n\n

The Anvil team

\n\r\n\t
\r\n\t
\r\n\t
\r\n\t \r\n\t
\r\n\t
\r\n\t \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n
\r\n
\r\n

Follow us on Twitter: @anvil_works

\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n\r\n" }, { "name": "new-organisation", "date": "1901-02-01 00:00:00 -0600", "tags": ["email","transactional"], "expires_on": null, "valid_from": null, "draft": false, "title": "Welcome to Anvil", "subject": "Your Anvil licence key", "resendable": null, "priority": null, "send_interval": null, "from": null, "if": null, "category": "transactional", "plain_text": "Hi there,\n\nThanks for purchasing a licence for Anvil.\n\nYou are now licensed to use Anvil, and the apps you make with Anvil, for commercial purposes, for up to %%NDEVS%% Anvil developer accounts.\n\nYour account is already upgraded. To activate additional developer accounts on this licence, you must enter the following licence key in the App Editor:\n\n%%LICENCE_KEY%%\n\nUp to %%NDEVS%% accounts may use this licence key.\n\nIf you have any problems or questions about activating your licence, please just reply to this email.\n", "html": "\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\"Anvil\"
\r\n
\r\n
\r\n

Welcome to Anvil

\r\n\r\n

\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n\t
\r\n\t \r\n\t \r\n\t \r\n\t \r\n\t \r\n\t \r\n\t
\r\n\t \r\n\t
\r\n\t \r\n\t \r\n\t \r\n\t \r\n\t \r\n\t \r\n\t
\r\n\t
\r\n\t

Hi there,

\n\n

Thanks for purchasing a licence for Anvil.

\n\n

You are now licensed to use Anvil, and the apps you make with Anvil, for commercial purposes, for up to %%NDEVS%% Anvil developer accounts.

\n\n

Your account is already upgraded. To activate additional developer accounts on this licence, you must enter the following licence key in the App Editor:

\n\n

%%LICENCE_KEY%%

\n\n

Up to %%NDEVS%% accounts may use this licence key.

\n\n

If you have any problems or questions about activating your licence, please just reply to this email.

\n\r\n\t
\r\n\t
\r\n\t
\r\n\t \r\n\t
\r\n\t
\r\n\t \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n
\r\n
\r\n

Follow us on Twitter: @anvil_works

\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n\r\n" }, { "name": "password-reset", "date": "1901-03-01 00:00:00 -0600", "tags": ["email","transactional"], "expires_on": null, "valid_from": null, "draft": false, "title": "Password Reset", "subject": "Anvil account password reset", "resendable": null, "priority": null, "send_interval": null, "from": null, "if": null, "category": "transactional", "plain_text": "Hi there,\n\nA password reset request was received for your Anvil account %%EMAIL_ADDRESS%%. To reset your password, click the link below. If you did not request a password reset, you can safely ignore this email.\n\n%%RESET_LINK%%\n\nAll the best,\n\nThe Anvil team\n", "html": "\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\"Anvil\"
\r\n
\r\n
\r\n

Password Reset

\r\n\r\n

\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n\t
\r\n\t \r\n\t \r\n\t \r\n\t \r\n\t \r\n\t \r\n\t
\r\n\t \r\n\t
\r\n\t \r\n\t \r\n\t \r\n\t \r\n\t \r\n\t \r\n\t
\r\n\t
\r\n\t

Hi there,

\n\n

A password reset request was received for your Anvil account %%EMAIL_ADDRESS%%. To reset your password, click the link below. If you did not request a password reset, you can safely ignore this email.

\n\n

%%RESET_LINK%%

\n\n

All the best,

\n\n

The Anvil team

\n\r\n\t
\r\n\t
\r\n\t
\r\n\t \r\n\t
\r\n\t
\r\n\t \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n
\r\n
\r\n

Follow us on Twitter: @anvil_works

\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n\r\n" }, { "name": "email-login", "date": "1901-04-01 00:00:00 -0600", "tags": ["email","transactional"], "expires_on": null, "valid_from": null, "draft": false, "title": "Anvil login", "subject": "Anvil login", "resendable": null, "priority": null, "send_interval": null, "from": null, "if": null, "category": "transactional", "plain_text": "Hi there,\n\nA two-factor login request was received for your Anvil account %%EMAIL_ADDRESS%%. To log in, click the link below. If you did not request an email login, please contact accounts@anvil.works. \n\n%%LOGIN_LINK%%\n\nThis link will expire in ten minutes.\n\nAll the best,\n\nThe Anvil team\n", "html": "\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\"Anvil\"
\r\n
\r\n
\r\n

Anvil login

\r\n\r\n

\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n\t
\r\n\t \r\n\t \r\n\t \r\n\t \r\n\t \r\n\t \r\n\t
\r\n\t \r\n\t
\r\n\t \r\n\t \r\n\t \r\n\t \r\n\t \r\n\t \r\n\t
\r\n\t
\r\n\t

Hi there,

\n\n

A two-factor login request was received for your Anvil account %%EMAIL_ADDRESS%%. To log in, click the link below. If you did not request an email login, please contact accounts@anvil.works.

\n\n

%%LOGIN_LINK%%

\n\n

This link will expire in ten minutes.

\n\n

All the best,

\n\n

The Anvil team

\n\r\n\t
\r\n\t
\r\n\t
\r\n\t \r\n\t
\r\n\t
\r\n\t \r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n
\r\n
\r\n

Follow us on Twitter: @anvil_works

\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n\r\n" }, { "name": "trial-welcome", "date": "1910-01-01 00:00:00 -0600", "tags": ["email","course"], "expires_on": null, "valid_from": null, "draft": false, "title": "Get Started with Anvil", "subject": "Get Started with Anvil", "resendable": null, "priority": null, "send_interval": null, "from": null, "if": ["q/trial-user"], "category": "drip", "plain_text": "Hi there,\n\nThanks for signing up for Anvil! We're looking forward to helping you build web applications faster and easier than ever before.\n\nStart with our tutorials - we've got 5-minute introductions, in-depth guides, and larger example apps:\n\nhttps://anvil.works/learn\n\n\nWant help? Ask a question on the Anvil User Forum:\n\nhttps://anvil.works/forum\n\n\nIf there's anything we can help you with, please just drop us a line at support@anvil.works.\n\nHave fun building with Anvil!\n\n\nAll the best,\n\nThe Anvil team\n\n-----\n\nPS: Any questions? Just reply to this email!\n", "html": "\n\n \n \n \n \n \n \n \n \n \n \n \n \n
\n \n
\n \n \n \n \n \n \n
\n \n
\n \n \n \n \n \n \n \n \n \n
\n \n \n \n \n \n \n
\"Anvil\"
\n
\n
\n

Get Started with Anvil

\n\n

\n
\n
\n
\n \n
\n
\n \n \n
\n \n \n \n \n \n \n
\n \n
\n \n \n \n \n \n \n
\n
\n

Hi there,

\n\n

Thanks for signing up for Anvil! We’re looking forward to helping you build web applications faster and easier than ever before.

\n\n

Start with our tutorials - we’ve got 5-minute introductions, in-depth guides, and larger example apps:

\n\n
\n
Tutorials and Examples
\n
\n
\n\n

Want help? Ask a question on the Anvil User Forum:

\n\n
\n
Open Forum
\n
\n
\n\n

If there’s anything we can help you with, please just drop us a line at support@anvil.works.

\n\n

Have fun building with Anvil!

\n\n


All the best,

\n\n

The Anvil team

\n\n
\n\n

PS: Any questions? Just reply to this email!

\n\n
\n
\n
\n \n
\n
\n \n\n \n
\n \n \n \n \n \n \n
\n \n
\n \n \n \n \n \n \n
\n \n
\n
\n \n
\n \n \n \n\n \n \n \n
\n
\n

Follow us on Twitter: @anvil_works

\n
\n
\n
\n \n
\n
\n \n
\n \n\n" }, { "name": "tutorials", "date": "1910-01-02 00:00:00 -0600", "tags": ["email","course"], "expires_on": null, "valid_from": null, "draft": false, "title": "Build a web app with database storage in 5 minutes", "subject": "Build a web app with database storage in 5 minutes", "resendable": null, "priority": null, "send_interval": 1, "from": null, "if": ["q/trial-user"], "category": "drip", "plain_text": "Hi there,\n\nDid you know how quickly you can build a database-backed app with Anvil?\n\nIn this tutorial, we'll show you how to build and publish a simple To-Do\nList app:\n%%ANVIL_ORIGIN%%/blog/storing-and-displaying-data\n\nAnd in just a few more minutes, we can turn it into a multi-user\napplication, with login and signup:\n%%ANVIL_ORIGIN%%/blog/multi-user-apps\n\nWant to see more? We've got lots more tutorials and examples:\nhttps://anvil.works/learn\n\nCheck them out, and let us know what you think in the Anvil user forum:\nhttps://anvil.works/forum\n\nAll the best,\nThe Anvil team\n\n----\n\nPS: Want to talk to us? We want to hear from you! Just reply to this email\n to get in touch.\n\nClick here to unsubscribe from all Anvil email:\n%%UNSUBSCRIBE_LINK%%\n", "html": "\n\n \n \n \n \n \n \n \n \n \n \n \n \n
\n \n
\n \n \n \n \n \n \n
\n \n
\n \n \n \n \n \n \n \n \n \n
\n \n \n \n \n \n \n
\"Anvil\"
\n
\n
\n

Build a web app with database storage in 5 minutes

\n\n

\n
\n
\n
\n \n
\n
\n \n \n
\n \n \n \n \n \n \n
\n \n
\n \n \n \n \n \n \n
\n
\n

Hi there,

\n\n

Did you know how quickly you can build a database-backed app with Anvil?

\n\n

1. Build a To-Do List app (7 minutes)

\n\n

In this tutorial, we’ll show you how to build and publish a simple To-Do List app. You can also find the sample code here:

\n\n
\n
Build a To-Do List
\n
\n\n

2. Add User Accounts and Signup (5 minutes)

\n\n

And in just a few more minutes, we can turn it into a multi-user application, with login and signup. (Again, there’s a video and sample code behind this link!)

\n\n
\n
Add user login and signup
\n
\n\n


Want to see more? We’ve got lots more tutorials and examples:

\n\n
\n
See all our tutorials
\n
\n\n

Check them out, and let us know what you think in the Anvil user forum.

\n\n

All the best,\nThe Anvil team

\n\n
\n\n

PS: Want to talk to us? We want to hear from you! Just reply to this email to get in touch.

\n\nClick here to unsubscribe from all Anvil email.\n\n
\n
\n
\n \n
\n
\n \n\n \n
\n \n \n \n \n \n \n
\n \n
\n \n \n \n \n \n \n
\n \n
\n
\n \n
\n \n \n \n\n \n \n \n
\n
\n

Follow us on Twitter: @anvil_works

\n
\n
\n
\n \n
\n
\n \n
\n \n\n" }, { "name": "hey-pycon", "date": "1910-01-05 00:00:00 -0600", "tags": ["email"], "expires_on": null, "valid_from": "2017-11-01", "draft": false, "title": "Hey", "subject": "Hey", "resendable": null, "priority": null, "send_interval": 3, "from": {"name":"Meredydd Luff","address":"meredydd@anvil.works"}, "if": ["q/trial-user","autosend-hey","pycon-17-uk","~personal-contact"], "category": "drip", "plain_text": "Hi there,\n\nGiven when you signed up, I'm guessing you signed up after visiting our stall at PyCon! Thanks for stopping by :)\n\nIt was a crazy four days, and we didn't have time to speak to everyone properly. Now the dust is settling, it would be great to hear a bit more about how you might use Anvil. What were you thinking of building?\n\nMeredydd\n\n--\nFounder - https://anvil.works\n", "html": "

Hi there,

\n\n

Given when you signed up, I’m guessing you signed up after visiting our stall at PyCon! Thanks for stopping by :)

\n\n

It was a crazy four days, and we didn’t have time to speak to everyone properly. Now the dust is settling, it would be great to hear a bit more about how you might use Anvil. What were you thinking of building?

\n\n

Meredydd

\n\n
\n--
\nMeredydd Luff
\nFounder - https://anvil.works
\n
\nTel: +44 (0) 1223 763799\n
\n" }, { "name": "hey", "date": "1910-01-05 00:00:00 -0600", "tags": ["email","course"], "expires_on": null, "valid_from": null, "draft": false, "title": "Hey", "subject": "Hey", "resendable": null, "priority": null, "send_interval": 3, "from": {"name":"Ian Davies","address":"ian@anvil.works"}, "if": ["q/trial-user","q/trial-days>3.5","autosend-hey","~personal-contact","~no-offers"], "category": "drip", "plain_text": "Hi there,\n\nWhat do you think of Anvil? I see you signed up recently (thanks for that), and wanted to know how it does or doesn't meet your needs.\n\nIs there a particular project you were thinking of using it for? I'd love to hear from you.\n\nIan\n\n--\nFounder - https://anvil.works\n", "html": "

Hi there,

\n\n

What do you think of Anvil? I see you signed up recently (thanks for that), and wanted to know how it does or doesn’t meet your needs.

\n\n

Is there a particular project you were thinking of using it for? I’d love to hear from you.

\n\n

Ian

\n\n
\n--
\nIan Davies
\nFounder - https://anvil.works
\n
\nTel: +44 (0) 7792 338514\n
\n" }, { "name": "trial-examples", "date": "1910-01-06 00:00:00 -0600", "tags": ["email","course"], "expires_on": null, "valid_from": null, "draft": false, "title": "More examples: Dashboards, Email, and Customer Distribution", "subject": "More examples: Dashboards, Email, and Customer Distribution", "resendable": null, "priority": null, "send_interval": 1, "from": null, "if": ["q/trial-user","q/trial-days>4.5"], "category": "drip", "plain_text": "We thought we'd share a few more examples to show you what you can do with Anvil:\n\n\n**1. Analyse and Display Data from a Database**\n\nNeed to build graphing and reports? Here's a step-by-step walkthrough for building a business dashboard with Anvil, using data in a Postgres database. (Of course, you can use any sort of database Python supports - MySQL, SQL Server, Mongo...you name it!)\n\nhttps://anvil.works/blog/dashboard\n\n\n**2. A Disposable Email Service**\n\nEver used Mailinator? It's a website gives you one-off, disposable email addresses that anyone can read. Here's how you can build something like that, using Anvil's email tools:\n\nhttps://anvil.works/blog/document-tracking\n\n\n**3. Browse and Download Documents, with Authentication**\n\nDistributing documentation to customers is a drag. We built an Anvil app for authenticated customers to download documentation. It includes a sophisticated administration interface to manage groups of users, and determine which areas they have access to:\n\nhttps://anvil.works/examples/secure-download-portal\n\n\nAs a reminder, we've got lots more [examples](https://anvil.works/learn/examples) on our website, as well as [step-by-step tutorials](https://anvil.works/learn/tutorials) to show you how to build things with Anvil. Check them out!\n\nAll the best,\nThe Anvil team\n\n----\n\nPS: Want to talk to us? We want to hear from you! Just reply to this email\n to get in touch.\n\nClick here to unsubscribe from all Anvil email:\n%%UNSUBSCRIBE_LINK%%\n", "html": "\n\n \n \n \n \n \n \n \n \n \n \n \n \n
\n \n
\n \n \n \n \n \n \n
\n \n
\n \n \n \n \n \n \n \n \n \n
\n \n \n \n \n \n \n
\"Anvil\"
\n
\n
\n

More examples: Dashboards, Email, and Customer Distribution

\n\n

\n
\n
\n
\n \n
\n
\n \n \n
\n \n \n \n \n \n \n
\n \n
\n \n \n \n \n \n \n
\n
\n

We thought we’d share a few more examples to show you what you can do with Anvil:

\n\n

1. Build a Dashboard

\n\n

Need to build graphing and reports? Here’s a step-by-step walkthrough for building a business dashboard with Anvil, using data in a Postgres database. (Of course, you can use any sort of database Python supports - MySQL, SQL Server, Mongo…you name it!)

\n\n
\n
Build a Business Dashboard
\n
\n\n

Of course, the same pattern can be used for monitoring a computer network, a group of sensors, anything that can be plotted!

\n\n

2. A Disposable Email Service

\n\n

Ever used Mailinator? It’s a website gives you one-off, disposable email addresses that anyone can read. Here’s how you can build something like that, using Anvil’s email tools:

\n\n
\n
Disposable Email Service
\n
\n\n

3. Browse and Download Documents, with Authentication

\n\n

Distributing documentation to customers is a drag. We built an Anvil app for authenticated customers to download documentation. It includes a sophisticated administration interface to manage groups of users, and determine which areas they have access to:

\n\n
\n
Building a Secure Document Delivery App
\n
\n\n
\n\n

As a reminder, we’ve got lots more examples on our website, as well as step-by-step tutorials to show you how to build things with Anvil. Check them out!

\n\n

All the best,
\nThe Anvil team

\n\n
\n\n

PS: Want to talk to us? We want to hear from you! Just reply to this email to get in touch.

\n\nClick here to unsubscribe from all Anvil email.\n\n
\n
\n
\n \n
\n
\n \n\n \n
\n \n \n \n \n \n \n
\n \n
\n \n \n \n \n \n \n
\n \n
\n
\n \n
\n \n \n \n\n \n \n \n
\n
\n

Follow us on Twitter: @anvil_works

\n
\n
\n
\n \n
\n
\n \n
\n \n\n" }, { "name": "free-training", "date": "1910-01-08 00:00:00 -0600", "tags": ["email","course"], "expires_on": null, "valid_from": null, "draft": false, "title": "Free 30-minute training session", "subject": "Free 30-minute training session", "resendable": null, "priority": null, "send_interval": 1, "from": {"name":"Anvil Training","address":"training@anvil.works"}, "if": ["q/trial-user","q/trial-days>6.5","~no-offers"], "category": "drip", "plain_text": "Hi there,\n\nTo get you better acquainted with Anvil, we would like to offer you an initial 30-minute training session for free! You will be paired with an experienced Anvil instructor in a screen-sharing session. The call is an opportunity for you to:\n\n1. Discuss your interests and get advice on you how to achieve your goals in Anvil\n2. Get answers your questions\n3. Get direct help building your app\n\nBy the end, you should have a clear path forward with your projects.\n\nThis is a limited-time offer; if you want to receive this training session, please click this link within the next 14 days to claim your space. (After that, we offer training at standard commercial rates. Ask us for more details.)\n\nClick here to book a training session:\nhttps://training-register.anvil.app/#?email=%%EMAIL_ADDRESS%%\n\nAll the best,\n\nThe Anvil team\n\n-----\nPS: Any questions? Just reply to this email!\n\n\nClick here to unsubscribe from all Anvil email:\n%%UNSUBSCRIBE_LINK%%\n", "html": "

Hi there,

\n\n

To get you better acquainted with Anvil, we would like to offer you an initial 30-minute training session for free! You will be paired with an experienced Anvil instructor in a screen-sharing session. The call is an opportunity for you to:

\n\n
    \n
  1. Discuss your interests and get advice on you how to achieve your goals in Anvil
  2. \n
  3. Get answers your questions
  4. \n
  5. Get direct help building your app
  6. \n
\n\n

By the end, you should have a clear path forward with your projects.

\n\n

This is a limited-time offer; if you want to receive this training session, please click here within the next 14 days to claim your space. (After that, we offer training at standard commercial rates. Ask us for more details.)

\n\n

Click here to book a training session:

\n
https://training-register.anvil.app/#?email=%%EMAIL_ADDRESS%%
\n\n


All the best,

\n\n

The Anvil team

\n\n
\n\n

PS: Any questions? Just reply to this email!

\n\nClick here to unsubscribe from all Anvil email.\n" }, { "name": "example-yc", "date": "1910-01-11 00:00:00 -0600", "tags": ["email","course"], "expires_on": null, "valid_from": null, "draft": false, "title": "How we rebuilt 2 Y Combinator startups in 4 hours", "subject": "How we rebuilt 2 Y Combinator startups in 4 hours", "resendable": null, "priority": null, "send_interval": 2, "from": null, "if": ["q/trial-user","q/trial-days>9.5"], "category": "drip", "plain_text": "\nA few months ago, we put Anvil through its paces by building prototypes of two moderately famous Silicon Valley startups. They both have significant user interfaces, but we built each of them in a couple of hours.\n\n\n**1. Meter Feeder**\n\nTraditional parking meters are cumbersome and require expensive physical hardware. What if you could do it on your phone? Meter Feeder is a startup that does just that.\n\nIt's got two interfaces: One for the motorist who's paying for parking, and one for the attendant who's checking the parked cars. We built both of them in an hour and a half -- take a look:\n\nhttps://anvil.works/blog/one-yc-startup-a-day\n\n\n**2. Magic**\n\nMagic is an SMS concierge. Text them a request, even an outlandish one like \"I need a helicopter from midtown Manhattan to the Hamptons this afternoon\", and they'll make it happen.\n\nThe core of this product is a group of resourceful people -- but they're assisted by technology. We built an app that can send and receive SMS (using the Nexmo API), allocate requests to people, and take payment from mobile users. Here's the walk-through:\n\nhttps://anvil.works/blog/yc-mvp-magic\n\n\n----\n\nAs a reminder, we've got lots more [examples](https://anvil.works/learn/examples) on our website, as well as [step-by-step tutorials](https://anvil.works/learn/tutorials) to show you how to build things with Anvil. Check them out!\n\nAll the best,\nThe Anvil team\n\n----\n\nPS: Want to talk to us? We want to hear from you! Just reply to this email\n to get in touch.\n\nClick here to unsubscribe from all Anvil email:\n%%UNSUBSCRIBE_LINK%%\n", "html": "\n\n \n \n \n \n \n \n \n \n \n \n \n \n
\n \n
\n \n \n \n \n \n \n
\n \n
\n \n \n \n \n \n \n \n \n \n
\n \n \n \n \n \n \n
\"Anvil\"
\n
\n
\n

How we rebuilt 2 Y Combinator startups in 4 hours

\n\n

\n
\n
\n
\n \n
\n
\n \n \n
\n \n \n \n \n \n \n
\n \n
\n \n \n \n \n \n \n
\n
\n

A few months ago, we put Anvil through its paces by building prototypes of two moderately famous Silicon Valley startups. They both have significant user interfaces, but we built each of them in a couple of hours.

\n\n

1. Meter Feeder

\n\n

Traditional parking meters are cumbersome and requires expensive physical hardware. What if you could do it on your phone? Meter Feeder is a startup that does just that.

\n\n

It’s got two interfaces: One for the motorist who’s paying for parking, and one for the attendant who’s checking the parked cars. We built both of them in an hour and a half – take a look:

\n\n
\n
How we built Meter Feeder in 1.5 hours
\n
\n\n

2. Magic

\n\n

Magic is an SMS concierge. Text them a request, even an outlandish one like “I need a helicopter from midtown Manhattan to the Hamptons this afternoon”, and they’ll make it happen.

\n\n

The core of this product is a group of resourceful people – but they’re assisted by technology. We built an app that can send and receive SMS (using the Nexmo API), allocate requests to people, and take payment from mobile users. Here’s the walk-through:

\n\n
\n
How we built Magic in 2.5 hours
\n
\n\n
\n\n

As a reminder, we’ve got lots more examples on our website, as well as step-by-step tutorials to show you how to build things with Anvil. Check them out!

\n\n

All the best,
\nThe Anvil team

\n\n
\n\n

PS: Want to talk to us? We want to hear from you! Just reply to this email to get in touch.

\n\nClick here to unsubscribe from all Anvil email.\n\n
\n
\n
\n \n
\n
\n \n\n \n
\n \n \n \n \n \n \n
\n \n
\n \n \n \n \n \n \n
\n \n
\n
\n \n
\n \n \n \n\n \n \n \n
\n
\n

Follow us on Twitter: @anvil_works

\n
\n
\n
\n \n
\n
\n \n
\n \n\n" }, { "name": "trial-skype", "date": "1910-01-15 00:00:00 -0600", "tags": ["email"], "expires_on": null, "valid_from": null, "draft": false, "title": "Can I talk to you?", "subject": "Can I talk to you?", "resendable": null, "priority": null, "send_interval": 2, "from": {"name":"Meredydd Luff","address":"meredydd@anvil.works"}, "if": ["q/trial-days>13.5","q/retention-1day","autosend-hey","~personal-contact","~no-offers"], "category": "drip", "plain_text": "Hi there,\n\nI see you've tried Anvil out a bit now, and I'd really like to get your feedback on how you found it.\n\nDo you have 15 minutes for a Skype or Hangouts call - say, Wednesday?\n\nMeredydd\n\n--\nFounder - https://anvil.works\n", "html": "

Hi there,

\n\n

I see you've tried Anvil out a bit now, and I'd really like to get your feedback on how you found it.

\n\n

Do you have 15 minutes for a Skype or Hangouts call - say, Wednesday?

\n\n

Meredydd

\n\n
\n--
\nMeredydd Luff
\nFounder - https://anvil.works
\n
\n" }, { "name": "training-offer-expiring", "date": "1910-01-17 00:00:00 -0600", "tags": ["email","course"], "expires_on": null, "valid_from": null, "draft": false, "title": "Just 4 days left: Claim your free 30-minute training session", "subject": "Just 4 days left: Claim your free 30-minute training session", "resendable": null, "priority": null, "send_interval": 1, "from": {"name":"Anvil Training","address":"training@anvil.works"}, "if": ["q/trial-user","q/trial-days>15.5","~no-offers","ab/offer-free-training"], "category": "drip", "plain_text": "Hi there,\n\nA few days ago, we offered you a 30-minute training session to learn your way around Anvil - entirely free. This is a limited-time offer, and you only have *four more days* to claim it!\n\nTo remind you, this initial session will be with an experienced Anvil instructor, who will use screen-sharing to guide you through building and publishing web apps with Anvil. By the end of the half-hour, you should be familiar with Anvil basics, and ready to start work on your own projects.\n\nIf you want to get a flying start with Anvil, click the link below and claim your place. Better be quick, though - after this initial offer period, we charge standard commercial rates! (Ask us for more details.)\n\nClick here to claim your training session:\nhttps://training-register.anvil.app/#?email=%%EMAIL_ADDRESS%%\n\n\nAll the best,\n\nThe Anvil team\n\n-----\nPS: Any questions? Just reply to this email!\n\n\nClick here to unsubscribe from all Anvil email:\n%%UNSUBSCRIBE_LINK%%\n", "html": "

Hi there,

\n\n

A few days ago, we offered you a 30-minute training session to learn your way around Anvil - entirely free. This is a limited-time offer, and you only have four more days to claim it!

\n\n

To remind you, this initial session will be with an experienced Anvil instructor, who will use screen-sharing to guide you through building and publishing web apps with Anvil. By the end of the half-hour, you should be familiar with Anvil basics, and ready to start work on your own projects.

\n\n

If you want to get a flying start with Anvil, click the link below and claim your place. Better be quick, though - after this initial offer period, we charge standard commercial rates! (Ask us for more details.)

\n\n
Click here to claim your training session.
\n\n

(Link didn’t work? Copy and paste this into your browser:
https://training-register.anvil.app/#?email=%%EMAIL_ADDRESS%%&x)

\n\n


All the best,

\n\n

The Anvil team

\n\n
\n\n

PS: Any questions? Just reply to this email!

\n\nClick here to unsubscribe from all Anvil email.\n" }, { "name": "example-live-code", "date": "1910-01-20 00:00:00 -0600", "tags": ["email","course"], "expires_on": null, "valid_from": null, "draft": false, "title": "Live-coding a SaaS app in 1 hour", "subject": "Live-coding a SaaS app in 1 hour", "resendable": null, "priority": null, "send_interval": 2, "from": null, "if": ["q/trial-user","q/trial-days>18.5"], "category": "drip", "plain_text": "Hi there,\n\nHere's an app inspired by one of our customers, who wanted to build a financial SaaS (Software-as-a-Service) app to track stock market prices using an API. So one of our founders, Meredydd, live-coded a stock-tracking app in less than an hour (53 minutes, to be precise) - complete with sign-up and billing. You can watch the video, or open the app yourself in the Anvil editor, here:\n\nhttps://anvil.works/blog/live-coding-stock-portfolio\n\nAs a reminder, we've got lots more [examples](https://anvil.works/learn/examples?utm_medium=email&utm_campaign=welcome) on our website, as well as [step-by-step tutorials](https://anvil.works/learn/tutorials?utm_medium=email&utm_campaign=welcome) to show you how to build things with Anvil. Check them out!\n\nAll the best,\nThe Anvil team\n\n----\n\nPS: Want to talk to us? We want to hear from you! Just reply to this email\n to get in touch.\n\nClick here to unsubscribe from all Anvil email:\n%%UNSUBSCRIBE_LINK%%\n", "html": "\n\n \n \n \n \n \n \n \n \n \n \n \n \n
\n \n
\n \n \n \n \n \n \n
\n \n
\n \n \n \n \n \n \n \n \n \n
\n \n \n \n \n \n \n
\"Anvil\"
\n
\n
\n

Live-coding a SaaS app in 1 hour

\n\n

\n
\n
\n
\n \n
\n
\n \n \n
\n \n \n \n \n \n \n
\n \n
\n \n \n \n \n \n \n
\n
\n

Hi there,

\n\n

Here’s an app inspired by one of our customers, who wanted to build a financial SaaS (Software-as-a-Service) app to track stock market prices using an API. So one of our founders, Meredydd, live-coded a stock-tracking app in less than an hour (53 minutes, to be precise) - complete with sign-up and billing. You can watch the video, or open the app yourself in the Anvil editor, here:

\n\n
\n
Live-coding a Stock Price App
\n
\n\n

As a reminder, we’ve got lots more examples on our website, as well as step-by-step tutorials to show you how to build things with Anvil. Check them out!

\n\n

All the best,
\nThe Anvil team

\n\n
\n\n

PS: Want to talk to us? We want to hear from you! Just reply to this email to get in touch.

\n\nClick here to unsubscribe from all Anvil email.\n\n
\n
\n
\n \n
\n
\n \n\n \n
\n \n \n \n \n \n \n
\n \n
\n \n \n \n \n \n \n
\n \n
\n
\n \n
\n \n \n \n\n \n \n \n
\n
\n

Follow us on Twitter: @anvil_works

\n
\n
\n
\n \n
\n
\n \n
\n \n\n" }, { "name": "example-doc-tracker", "date": "1910-01-27 00:00:00 -0600", "tags": ["email","course"], "expires_on": null, "valid_from": null, "draft": false, "title": "Building a document tracking app in 15 minutes", "subject": "Building a document tracking app in 15 minutes", "resendable": null, "priority": null, "send_interval": 2, "from": null, "if": ["q/trial-user","q/trial-days>25.5"], "category": "drip", "plain_text": "Hi there,\n\nAs you explore Anvil, here's another quick example to see what you can do. Watch Ian\nbuild a simple document management app, where you can upload, track and\ncomment on documents, in 15 minutes:\n\nhttps://anvil.works/blog/document-tracking\n\n\nWe've got lots more examples at https://anvil.works/learn/examples - you\nshould really take a look. Check them out, and do let us know what you\nthink.\n\nAll the best,\nThe Anvil team\n\n----\n\nPS: Want to talk to us? We want to hear from you! Just reply to this email\n to get in touch.\n\nClick here to unsubscribe from all Anvil email:\n%%UNSUBSCRIBE_LINK%%\n", "html": "\n\n \n \n \n \n \n \n \n \n \n \n \n \n
\n \n
\n \n \n \n \n \n \n
\n \n
\n \n \n \n \n \n \n \n \n \n
\n \n \n \n \n \n \n
\"Anvil\"
\n
\n
\n

Building a document tracking app in 15 minutes

\n\n

\n
\n
\n
\n \n
\n
\n \n \n
\n \n \n \n \n \n \n
\n \n
\n \n \n \n \n \n \n
\n
\n

Hi there,

\n\n

Here’s another quick example to see what you can do. Watch Ian build a simple document management app, where you can upload, track and comment on documents, in 15 minutes:

\n\n
\n
Live-coding a Document Management App
\n
\n\n

We’ve got lots more examples at https://anvil.works/learn/examples - you should really take a look. Check them out, and do let us know what you think.

\n\n

All the best,
\nThe Anvil team

\n\n
\n\n

PS: Want to talk to us? We want to hear from you! Just reply to this email to get in touch.

\n\nClick here to unsubscribe from all Anvil email.\n\n
\n
\n
\n \n
\n
\n \n\n \n
\n \n \n \n \n \n \n
\n \n
\n \n \n \n \n \n \n
\n \n
\n
\n \n
\n \n \n \n\n \n \n \n
\n
\n

Follow us on Twitter: @anvil_works

\n
\n
\n
\n \n
\n
\n \n
\n \n\n" }, { "name": "course-intro", "date": "1911-01-01 00:00:00 -0600", "tags": ["email","course"], "expires_on": null, "valid_from": null, "draft": false, "title": "Getting started with Anvil", "subject": "Getting started with Anvil", "resendable": null, "priority": null, "send_interval": null, "from": null, "if": ["q/list-subscribed"], "category": "course", "plain_text": "Hi there,\n\nWelcome to our email course on getting the best out of Anvil. We'll be sending you new lessons about once a week. If you don't want any more emails from us, [click here to unsubscribe](%%UNSUBSCRIBE_LINK%%).\n\nBefore we begin: We want this course to work for you - What do *you* want out of Anvil? What do you want to see in future lessons? Please hit Reply and let us know.\n\n-------\n\nLet's start with a tour. In today's screencast, I'll show you how to make a web page by dragging and dropping components, and build up from that to a secure, database-backed web application - all in six minutes:\n\nhttps://youtu.be/m7kzwpJfEeY\n\n-------\n\nIf you want to know more about what we've shown you in this video, you can find details in the [Anvil reference docs](%%ANVIL_ORIGIN%%/doc). In particular, you can read more about:\n\n* [Forms and components](%%ANVIL_ORIGIN%%/doc/#forms), and how to control your webpage by writing Python code.\n\n\nHappy hacking!\n\nAll the best,\n\nMeredydd & Ian\n\n-----\n\nPS: Any questions? Just reply to this email!\n", "html": "\n\n \n \n \n \n \n \n \n \n \n \n \n \n
\n \n
\n \n \n \n \n \n \n
\n \n
\n \n \n \n \n \n \n \n \n \n
\n \n \n \n \n \n \n
\"Anvil\"
\n
\n
\n

Getting started with Anvil

\n\n

\n
\n
\n
\n \n
\n
\n \n \n
\n \n \n \n \n \n \n
\n \n
\n \n \n \n \n \n \n
\n
\n

Hi there,

\n\n

Welcome to our email course on getting the best out of Anvil. We’ll be sending you new lessons about once a week. If you don’t want any more emails from us, click here to unsubscribe.

\n\n

Before we begin: We want this course to work for you - What do you want out of Anvil? What do you want to see in future lessons? Please hit Reply and let us know.

\n\n
\n\n


Let’s start with a tour. In today’s screencast, I’ll show you how to make a web page by dragging and dropping components, and build up from that to a secure, database-backed web application - all in six minutes:

\n\n\n\n\n\n\n\n
\n\n

If you want to know more about what we’ve shown you in this video, you can find details in the Anvil reference docs. In particular, you can read more about:

\n\n\n\n

Happy hacking!

\n\n


\nAll the best,

\n\n

Meredydd & Ian

\n\n
\n\n

PS: Any questions? Just reply to this email!

\n\n\n
\n
\n
\n \n
\n
\n \n\n \n
\n \n \n \n \n \n \n
\n \n
\n \n \n \n \n \n \n
\n \n
\n
\n \n
\n \n \n \n\n \n \n \n
\n
\n

Follow us on Twitter: @anvil_works

\n
\n
\n
\n \n
\n
\n \n
\n \n\n" }, { "name": "course-guest-book", "date": "1912-01-01 00:00:00 -0600", "tags": ["email","course"], "expires_on": null, "valid_from": null, "draft": true, "title": "Anvil On-Site, and using Google Sheets", "subject": "Anvil On-Site, and using Google Sheets", "resendable": null, "priority": null, "send_interval": null, "from": null, "if": ["q/list-subscribed"], "category": "course", "plain_text": "Hello again,\n\nFirst, a question lots of you have asked:\n\nCan I install Anvil on my company's internal servers? *Yes, you can!*\n\nFind out more on our blog: https://anvil.works/blog/anvil-on-site\n\n-------\n\nWelcome to the second instalment of our email course on getting the best out of Anvil. This week, you'll learn how to use Google Sheets to store data quickly and easily in your app.\n\nToday's project is based on our [Getting Started guide](%%ANVIL_ORIGIN%%/doc/getting_started.html), where we walk you through building a Guest Book web page. Visitors to your site can add their name and a note, and view entries from previous visitors. You'll use Google Sheets to store the list of visitors. \n\nThe steps we'll take are roughly as follows:\n\n1. Create a 'Hello World' app, just like last week's.\n (%%ANVIL_ORIGIN%%/doc/getting_started.html#create_blank_app)\n\n2. Link the app to a Google Spreadsheet to store and load a list of visitors.\n (%%ANVIL_ORIGIN%%/doc/getting_started.html#linking_sheets)\n\n3. Build a custom component to display previous visitors.\n (%%ANVIL_ORIGIN%%/doc/getting_started.html#custom_components) \n\n-------\n\nIf you want to know more about what we've shown you in this guide, you can find details in the [Anvil reference docs](%%ANVIL_ORIGIN%%/doc). In particular, you can read more about:\n\n* Linking to Google Drive: %%ANVIL_ORIGIN%%/doc/#google\n* Building custom components: %%ANVIL_ORIGIN%%/doc/#forms_as_components\n\n\nHappy hacking!\n\n\nAll the best,\n\nIan & Meredydd\n\n-----\n\nPS: Any questions? Just reply to this email!\n\nWe'll be sending you new lessons about once a week. If you don't want any more emails from us, click here to unsubscribe:\n%%UNSUBSCRIBE_LINK%%\n", "html": "\n\n \n \n \n \n \n \n \n \n \n \n \n \n
\n \n
\n \n \n \n \n \n \n
\n \n
\n \n \n \n \n \n \n \n \n \n
\n \n \n \n \n \n \n
\"Anvil\"
\n
\n
\n

Anvil On-Site, and using Google Sheets

\n\n

\n
\n
\n
\n \n
\n
\n \n \n
\n \n \n \n \n \n \n
\n \n
\n \n \n \n \n \n \n
\n
\n

Hello again,

\n\n

First, a question lots of you have asked: Can I install Anvil on my company’s internal servers?

\n\n

Yes, you can! Find out more on our blog.

\n\n
\n\n

Welcome to the second instalment of our email course on getting the best out of Anvil. This week, you’ll learn how to use Google Sheets to store data quickly and easily in your app.

\n\n

Today’s project is based on our Getting Started guide, where we walk you through building a Guest Book web page. Visitors to your site can add their name and a note, and view entries from previous visitors. You’ll use Google Sheets to store the list of visitors.

\n\n

The steps we’ll take are roughly as follows:

\n\n
    \n
  1. Create a ‘Hello World’ app just like last week’s.
  2. \n
  3. Link the app to a Google Spreadsheet to store and load a list of visitors.
  4. \n
  5. Build a custom component to display previous visitors.
  6. \n
\n\n
\n\n

If you want to know more about what we’ve shown you in this guide, you can find details in the Anvil reference docs. In particular, you can read more about:

\n\n\n\n

Happy hacking!

\n\n


\nAll the best,

\n\n

Ian & Meredydd

\n\n
\n\n

PS: Any questions? Just reply to this email!

\n\n


\n\nWe'll be sending you new lessons about once a week. If you don't want any more emails from us, click here to unsubscribe.\n\n\n
\n
\n
\n \n
\n
\n \n\n \n
\n \n \n \n \n \n \n
\n \n
\n \n \n \n \n \n \n
\n \n
\n
\n \n
\n \n \n \n\n \n \n \n
\n
\n

Follow us on Twitter: @anvil_works

\n
\n
\n
\n \n
\n
\n \n
\n \n\n" }, { "name": "course-storing-data", "date": "1920-01-01 00:00:00 -0600", "tags": ["email","course"], "expires_on": null, "valid_from": null, "draft": false, "title": "Storing Data with Anvil", "subject": "Storing Data with Anvil", "resendable": null, "priority": null, "send_interval": null, "from": null, "if": ["q/list-subscribed"], "category": "course", "plain_text": "Hello again,\n\nFirst, a question lots of you have asked: Can I install Anvil on my company's internal servers?\n\nYes, you can! Find out more on our blog:\nhttps://anvil.works/blog/anvil-on-site\n\n-------\n\nWelcome to the second instalment of our email course on getting the best\nout of Anvil. This week, you'll learn how to use data tables to store data\nquickly and easily in your app.\n\nWe'll build a To-Do list app - it only takes five minutes!\n\nhttps://youtu.be/rJ0LnTNV7Ac\n\n\n-------\n\nIf you want to know more about what we've shown you in this guide, you can\nfind details in the Anvil reference docs (%%ANVIL_ORIGIN%%/doc). In\nparticular, you can read more about:\n\n* Data Tables: %%ANVIL_ORIGIN%%/doc/#data_tables\n* Using forms as custom components: %%ANVIL_ORIGIN%%/doc/#forms_as_components\n\n\nAnd, of course, if you have any comments or feedback, or just want to get\nin touch, hit Reply to this email and drop us a line.\n\n\nHappy hacking!\n\nAll the best,\n\nIan & Meredydd\n\n-----\n\nWe'll be sending you new lessons about once a week. If you don't want any more emails from us, click here to unsubscribe:\n%%UNSUBSCRIBE_LINK%%\n", "html": "\n\n \n \n \n \n \n \n \n \n \n \n \n \n
\n \n
\n \n \n \n \n \n \n
\n \n
\n \n \n \n \n \n \n \n \n \n
\n \n \n \n \n \n \n
\"Anvil\"
\n
\n
\n

Storing Data with Anvil

\n\n

\n
\n
\n
\n \n
\n
\n \n \n
\n \n \n \n \n \n \n
\n \n
\n \n \n \n \n \n \n
\n
\n

Hello again,

\n\n

First, a question lots of you have asked: Can I install Anvil on my company’s internal servers?

\n\n

Yes, you can! Find out more on our blog.

\n\n
\n\n

Welcome to the second instalment of our email course on getting the best out of Anvil. This week, you’ll learn how to use data tables to store data quickly and easily in your app.

\n\n

We’ll build a To-Do list app - it only takes five minutes!

\n\n\n\n\n\n\n\n
\n\n

If you want to know more about what we’ve shown you in this guide, you can find details in the Anvil reference docs. In particular, you can read more about:

\n\n\n\n

And, of course, if you have any comments or feedback, or just want to get in touch, hit Reply to this email and drop us a line.

\n\n

Happy hacking!

\n\n


\n\n

All the best,

\n\n

Ian & Meredydd

\n\n
\n\n

PS: Any questions? Just reply to this email!

\n\n


\n\nWe'll be sending you new lessons about once a week. If you don't want any more emails from us, click here to unsubscribe.\n\n
\n
\n
\n \n
\n
\n \n\n \n
\n \n \n \n \n \n \n
\n \n
\n \n \n \n \n \n \n
\n \n
\n
\n \n
\n \n \n \n\n \n \n \n
\n
\n

Follow us on Twitter: @anvil_works

\n
\n
\n
\n \n
\n
\n \n
\n \n\n" }, { "name": "course-authentication", "date": "1925-01-01 00:00:00 -0600", "tags": ["email","course"], "expires_on": null, "valid_from": "2016-05-18", "draft": true, "title": "Do you know who your users are?", "subject": "Do you know who your users are?", "resendable": null, "priority": null, "send_interval": null, "from": null, "if": ["q/list-subscribed"], "category": "course", "plain_text": "Hello again,\n\nWe all agree - it's important not to give the wrong people access to your\ndata. The simplest way to do this with Anvil is to keep the Share link\nsecret: Nobody can get at your app's data without that link.\n\nBut if you're publishing your app to larger groups of people, it's\nimportant to check who they are, and control their access accordingly.\n\nIn this week's video tutorial, we're going to learn how to use Google\nauthentication to verify our user's identity before we show them our\nsecrets.\n\n(\"Wait a second\", you say. \"I have a corporate network. I want to use\nActive Directory or LDAP instead!\" Good news - Anvil can do that, and\nit's just as easy. Send an email to onsite@anvil.works to ask about\non-site installations of Anvil.)\n\nWatch the tutorial video:\n\nhttps://youtu.be/bDIL60EoZYk\n\n\nEasy, right?\n\nTry it out at %%ANVIL_ORIGIN%%\n\n-------\n\nNow, We want YOUR feedback. Hit Reply to this email and drop us a line.\n\nHappy hacking!\n\n\nAll the best,\n\nIan & Meredydd\n\n-----\n\nWe'll be sending you new lessons about once a week. If you don't want any\nmore emails from us, click here to unsubscribe:\n%%UNSUBSCRIBE_LINK%%\n", "html": "\n\n \n \n \n \n \n \n \n \n \n \n \n \n
\n \n
\n \n \n \n \n \n \n
\n \n
\n \n \n \n \n \n \n \n \n \n
\n \n \n \n \n \n \n
\"Anvil\"
\n
\n
\n

Do you know who your users are?

\n\n

\n
\n
\n
\n \n
\n
\n \n \n
\n \n \n \n \n \n \n
\n \n
\n \n \n \n \n \n \n
\n
\n

Hello again,

\n\n

We all agree - it’s important not to give the wrong people access to your data. The simplest way to do this with Anvil is to keep the Share link secret: Nobody can get at your app’s data without that link.

\n\n

But if you’re publishing your app to larger groups of people, it’s important to check who they are, and control their access accordingly.

\n\n

In this week’s video tutorial, we’re going to learn how to use Google authentication to verify our user’s identity before we show them our secrets.

\n\n
\nWait a second, you say. I have a corporate network. I want to use Active Directory or LDAP instead!\n

\nGood news - Anvil can do that, and it's just as easy. Contact us to ask about on-site installations of Anvil.\n
\n\n


Watch the video:

\n\n\n\n\n\n\n\n

Easy, right?

\n\n

Try it out at www.anvil.works

\n\n
\n\n

Now, We want YOUR feedback. Hit Reply to this email and drop us a line.

\n\n

Happy hacking!

\n\n


\n\n

All the best,

\n\n

Ian & Meredydd

\n\n
\n\n

PS: Any questions? Just reply to this email!

\n\n


\n\nWe'll be sending you new lessons about once a week. If you don't want any more emails from us, click here to unsubscribe.\n\n
\n
\n
\n \n
\n
\n \n\n \n
\n \n \n \n \n \n \n
\n \n
\n \n \n \n \n \n \n
\n \n
\n
\n \n
\n \n \n \n\n \n \n \n
\n
\n

Follow us on Twitter: @anvil_works

\n
\n
\n
\n \n
\n
\n \n
\n \n\n" }, { "name": "course-advanced-data-storage", "date": "1930-01-01 00:00:00 -0600", "tags": ["email","course"], "expires_on": null, "valid_from": null, "draft": false, "title": "Building Multi-User Applications with Anvil", "subject": "Building Multi-User Applications with Anvil", "resendable": null, "priority": null, "send_interval": null, "from": null, "if": ["q/list-subscribed"], "category": "course", "plain_text": "Hello again,\n\nDoes your app have more than one user? It's important to keep each user's data safe from other users, as well as anonymous visitors.\n\nIn this installment of the Anvil email course, you'll learn how to control access to data stored in your app's data tables. It takes us only four minutes to turn the To-Do list example we built before into a secure, multi-user application, using Google for authentication.\n\n(Wait a second, you say. I have a corporate network. I want to use Active Directory or LDAP instead! Good news - Anvil can do that, and it's just as easy. Contact us to ask about on-site installations of Anvil. Just email onsite@anvil.works)\n\n\nNow watch the video:\nhttps://youtu.be/3BO3Xk9Hc3g\n\nYou can open the example app we built, right here:\n%%ANVIL_ORIGIN%%/ide/#template:todo_list.yaml\n\n-------\n\nIf you want to explore these features some more, you can find details in the Anvil reference docs (%%ANVIL_ORIGIN%%/doc). In particular, you can read more about:\n\n* Data Tables: %%ANVIL_ORIGIN%%/doc/#data_tables\n* Authenticating users with Google: %%ANVIL_ORIGIN%%/doc/#google\n\n\nAnd, of course, if you have any comments or feedback, or just want to get\nin touch, hit Reply to this email and drop us a line.\n\n\nHappy hacking!\n\nAll the best,\n\nIan & Meredydd\n\n-----\n\nWe'll be sending you new lessons about once a week. If you don't want any more emails from us, click here to unsubscribe:\n%%UNSUBSCRIBE_LINK%%\n", "html": "\n\n \n \n \n \n \n \n \n \n \n \n \n \n
\n \n
\n \n \n \n \n \n \n
\n \n
\n \n \n \n \n \n \n \n \n \n
\n \n \n \n \n \n \n
\"Anvil\"
\n
\n
\n

Building Multi-User Applications with Anvil

\n\n

\n
\n
\n
\n \n
\n
\n \n \n
\n \n \n \n \n \n \n
\n \n
\n \n \n \n \n \n \n
\n
\n

Hello again,

\n\n

Does your app have more than one user? It’s important to keep each user’s data safe from other users, as well as anonymous visitors.

\n\n

In this installment of the Anvil email course, you’ll learn how to control access to data stored in your app’s data tables. It takes us only four minutes to turn the To-Do list example we built before into a secure, multi-user application, using Google for authentication.

\n\n

Watch the video:

\n\n\n\n\n\n\n\n

You can open the example app we built, right here.

\n\n
\nWait a second, you say. I have a corporate network. I want to use Active Directory or LDAP instead!\n

\nGood news - Anvil can do that, and it's just as easy. Contact us to ask about on-site installations of Anvil.\n
\n\n
\n\n

If you want to explore these features some more, you can find details in the Anvil reference docs. In particular, you can read more about:

\n\n\n\n

And, of course, if you have any comments or feedback, or just want to get in touch, hit Reply to this email and drop us a line.

\n\n

Happy hacking!

\n\n


\n\n

All the best,

\n\n

Ian & Meredydd

\n\n
\n\n

PS: Any questions? Just reply to this email!

\n\n


\n\nWe'll be sending you new lessons about once a week. If you don't want any more emails from us, click here to unsubscribe.\n\n
\n
\n
\n \n
\n
\n \n\n \n
\n \n \n \n \n \n \n
\n \n
\n \n \n \n \n \n \n
\n \n
\n
\n \n
\n \n \n \n\n \n \n \n
\n
\n

Follow us on Twitter: @anvil_works

\n
\n
\n
\n \n
\n
\n \n
\n \n\n" }, { "name": "course-git-storage", "date": "1940-01-01 00:00:00 -0600", "tags": ["email","course"], "expires_on": null, "valid_from": null, "draft": false, "title": "How I saved myself a sleepless night", "subject": "How I saved myself a sleepless night", "resendable": null, "priority": null, "send_interval": null, "from": null, "if": ["q/list-subscribed"], "category": "course", "plain_text": "Hello again,\n\nYears ago, I spent far too many nights staying up, waiting for a\nmeeting to end on the other side of the world. Why? I needed to apply\na simple configuration change to launch a promotion, as soon as it\nwas approved by our business partners. And I was the only one who\ncould edit that text file.\n\nIn today's lesson, we're going to walk through how to save yourself\nthose sleepless nights, by building a simple configuration interface\nthat's easy (and safe) for non-technical colleagues to use. Even\nbetter, we'll use the GitHub API to ensure that every change to this\nconfiguration is logged and traceable.\n\nDive in with me here:\n\nhttps://anvil.works/blog/github-storage\n\n\n-------\n\nIf you want to know more about the topics covered in this guide, you\ncan find details in the Anvil reference docs (%%ANVIL_ORIGIN%%/doc).\nIn particular, you can read more about how to use HTTP APIs with Anvil\n(%%ANVIL_ORIGIN%%/doc/#http_module).\n\n\nAnd, of course, if you have any comments or feedback, or just want to\nget in touch, hit Reply to this email and drop us a line.\n\nHappy hacking!\n\n\nAll the best,\n\nMeredydd\n\n-----\n\nPS: Any questions? Just reply to this email!\n\n\nWe'll be sending you new lessons about once a week. If you don't want\nany more emails from us, click here to unsubscribe:\n%%UNSUBSCRIBE_LINK%%\n", "html": "\n\n \n \n \n \n \n \n \n \n \n \n \n \n
\n \n
\n \n \n \n \n \n \n
\n \n
\n \n \n \n \n \n \n \n \n \n
\n \n \n \n \n \n \n
\"Anvil\"
\n
\n
\n

How I saved myself a sleepless night

\n\n

\n
\n
\n
\n \n
\n
\n \n \n
\n \n \n \n \n \n \n
\n \n
\n \n \n \n \n \n \n
\n
\n

Hello again,

\n\n

Years ago, I spent far too many nights staying up, waiting for a meeting to end on the other side of the world. Why? I needed to apply a simple configuration change to launch a promotion, as soon as it was approved by our business partners. And I was the only one who could edit that text file.

\n\n

In today’s lesson, we’re going to walk through how to save yourself those sleepless nights, by building a simple configuration interface that’s easy (and safe) for non-technical colleagues to use. Even better, we’ll use the GitHub API to ensure that every change to this configuration is logged and traceable.

\n\n

Dive in with me here:

\n
Read the walkthrough
\n


\n\n
\n\n

If you want to know more about the topics covered in this guide, you can find details in the Anvil reference docs. In particular, you can read more about how to use HTTP APIs with Anvil.

\n\n

And, of course, if you have any comments or feedback, or just want to get in touch, hit Reply to this email and drop us a line.

\n\n

Happy hacking!

\n\n


\n\n

All the best,

\n\n

Meredydd

\n\n
\n\n

PS: Any questions? Just reply to this email!

\n\n


\n\nWe'll be sending you new lessons about once a week. If you don't want any more emails from us, click here to unsubscribe.\n\n
\n
\n
\n \n
\n
\n \n\n \n
\n \n \n \n \n \n \n
\n \n
\n \n \n \n \n \n \n
\n \n
\n
\n \n
\n \n \n \n\n \n \n \n
\n
\n

Follow us on Twitter: @anvil_works

\n
\n
\n
\n \n
\n
\n \n
\n \n\n" }, { "name": "course-html-templates", "date": "1950-01-01 00:00:00 -0600", "tags": ["email","course"], "expires_on": null, "valid_from": null, "draft": false, "title": "Make your apps beautiful with templates", "subject": "Make your apps beautiful with templates", "resendable": null, "priority": null, "send_interval": null, "from": null, "if": ["q/list-subscribed"], "category": "course", "plain_text": "Speed, meet beauty.\n\nBuilding a web page with drag and drop is much faster than fighting with\nHTML, CSS and Javascript. When we set out to build Anvil, we wanted to make\n it as easy to design a web app as it is to lay out a Powerpoint slide.\n\nBut sometimes, you need to put your best foot forward. You want to re-use\nyour existing page design and brand assets. Or if you’re building those\nassets from scratch, you want pixel-perfect control over your page header.\nIn short, you want the flexibility of traditional web design.\n\nSo, we asked: What if you could have both?\n\nWe’re excited to announce support for HTML templates in Anvil. You can\nchoose from our menu of ready-to-go templates, or use your existing web\ndesign assets. Once you’ve loaded your template, development is as easy as\never: just drag and drop Anvil components into the page, and arrange them\nhow you like. And you can drive all these components with Anvil’s\nstraightforward Python APIs. (No Javascript-framework-of-the-week\nnecessary.)\n\nDive in with me here, and read the blog post:\n\nhttps://anvil.works/blog/drag-drop-templates\n\n\nHappy hacking!\n\nMeredydd\n\n-----\n\nPS: Any questions? Just reply to this email!\n\nWe'll be sending you new lessons about once a week. If you don't want any\nmore emails from us, click here to unsubscribe:\n\n%%UNSUBSCRIBE_LINK%%\n", "html": "\n\n \n \n \n \n \n \n \n \n \n \n \n \n
\n \n
\n \n \n \n \n \n \n
\n \n
\n \n \n \n \n \n \n \n \n \n
\n \n \n \n \n \n \n
\"Anvil\"
\n
\n
\n

Make your apps beautiful with templates

\n\n

\n
\n
\n
\n \n
\n
\n \n \n
\n \n \n \n \n \n \n
\n \n
\n \n \n \n \n \n \n
\n
\n

Speed, meet beauty.

\n\n

Building a web page with drag and drop is much faster than fighting with HTML, CSS and Javascript. When we set out to build Anvil, we wanted to make it as easy to design a web app as it is to lay out a Powerpoint slide.

\n\n

But sometimes, you need to put your best foot forward. You want to re-use your existing page design and brand assets. Or if you’re building those assets from scratch, you want pixel-perfect control over your page header. In short, you want the flexibility of traditional web design.

\n\n

So, we asked: What if you could have both?

\n\n

We’re excited to announce support for HTML templates in Anvil. You can choose from our menu of ready-to-go templates, or use your existing web design assets. Once you’ve loaded your template, development is as easy as ever: just drag and drop Anvil components into the page, and arrange them how you like. And you can drive all these components with Anvil’s straightforward Python APIs. (No Javascript-framework-of-the-week necessary.)

\n\n

Dive in with me here:

\n
Read the announcement
\n


\n\n

I really recommend you read the blog post - it’s got colourful pictures and (silent, quick, pretty) demo videos. Go check it out :)

\n\n

Of course, if you have any comments or feedback, or just want to get in touch, hit Reply to this email and drop us a line.

\n\n

Happy hacking!

\n\n


\n\n

All the best,

\n\n

Meredydd

\n\n
\n\n

PS: Any questions? Just reply to this email!

\n\n


\n\nWe'll be sending you new lessons about once a week. If you don't want any more emails from us, click here to unsubscribe.\n\n
\n
\n
\n \n
\n
\n \n\n \n
\n \n \n \n \n \n \n
\n \n
\n \n \n \n \n \n \n
\n \n
\n
\n \n
\n \n \n \n\n \n \n \n
\n
\n

Follow us on Twitter: @anvil_works

\n
\n
\n
\n \n
\n
\n \n
\n \n\n" }, { "name": "announcing-app-secrets", "date": "2000-01-01 00:00:00 -0600", "tags": ["email","newsletter","interrupt"], "expires_on": "2018-02-15", "valid_from": "2018-01-15", "draft": false, "title": "Encrypted storage: Now made easy!", "subject": "Encrypted storage: Now made easy!", "resendable": null, "priority": null, "send_interval": null, "from": {"name":"Meredydd Luff","address":"meredydd@anvil.works"}, "if": [], "category": "announcement", "plain_text": "\nHey,\n\nI hope you're having a good 2018 so far!\n\nI am pleased to announce that we've just made it simpler and safer than ever before to store sensitive information in your Anvil apps.\n\nYou can now use our App Secrets service to store encrypted data. Use it to store API credentials, database credentials, or to encrypt the data you store in your Anvil app.\n\nClick to read more, or check out our video demo:\n\nhttps://anvil.works/blog/app-secrets\n\nIf you find it useful, come and tell us about it on the Anvil forums: https://anvil.works/forum\n\nAll the best,\n\nMeredydd\n--\n\nPS: Any questions? Just reply to this email! Sure, this is a mailing list, but this is my real personal address.\n\nIf you don't want any more email from us, just click %%UNSUBSCRIBE_LINK%%\n", "html": "\n\n \n \n\t\n \n \n \t\n\n

Hey,

\n\n

I hope you’re having a good 2018 so far!

\n\n

I am pleased to announce that we’ve just made it simpler and safer than ever before to store sensitive information in your Anvil apps.

\n\n

You can now use our App Secrets service to store encrypted data. Use it to store API credentials, database credentials, or to encrypt the data you store in your Anvil app.

\n\n

Click to read more, or check out our video demo:

\n\n\n\n
\n\n\n\n

If you find it useful, come and tell us about it on the Anvil forums!

\n\n

All the best,

\n\n

Meredydd

\n\n

PS: Any questions? Just reply to this email! Sure, this is a mailing list, but this is my real personal address.

\n\n

If you don’t want any more email from us, just click here

\n\n \n" }, { "name": "announcing-data-bindings", "date": "2000-01-01 00:00:00 -0600", "tags": ["email","newsletter","interrupt"], "expires_on": "2017-10-20", "valid_from": "2017-09-20", "draft": false, "title": "Displaying data just got 10x easier", "subject": "Displaying data just got 10x easier", "resendable": null, "priority": null, "send_interval": null, "from": {"name":"Meredydd Luff","address":"meredydd@anvil.works"}, "if": [], "category": "announcement", "plain_text": "Hey,\n\nWe've just made it even faster and easier to display data in your web apps.\nAnvil's new data bindings let you visually design where your data goes, just\nlike you can visually design the pages of your app. And you still have all\nthe power of Python code!\n\nThis is one of the most significant updates we've ever made to Anvil, and\nI'm really pleased to share it with you. Click here to see how it works:\n\n %%ANVIL_ORIGIN%%/blog/announcing-data-bindings\n\n\nAll the best,\n\nMeredydd\n\n--\nPS: Why do we say \"10x\"? We did the tests! More about that in a future email.\n If you want to know more, just hit reply - this is my actual email address.\n\nIf you don't want any more email from us, just click %%UNSUBSCRIBE_LINK%%\n", "html": "\n\n \n \n\t\n \n \n \t\n\n

Hey,

\n\n

We’ve just made it even faster and easier to display data in your web apps. Anvil’s new data bindings let you visually design where your data goes, just like you can visually design the pages of your app. And you still have all the power of Python code!

\n\n
\n\n\"Screenshot\n\n
\n\n

This is one of the most significant updates we’ve ever made to Anvil, and I’m really pleased to share it with you. Click here to see how it works:

\n\n
\nRead the blog post\n
\n\n

All the best,

\n\n

Meredydd

\n\n

\n\n

PS: Why do we say “10x”? We did the tests! More about that in a future email.\nIf you want to know more, just hit reply - this is my actual email address.

\n\n

If you don’t want any more email from us, just click here.

\n\n \n" }, { "name": "announcing-data-grids", "date": "2000-01-01 00:00:00 -0600", "tags": ["email","newsletter","interrupt"], "expires_on": "2018-09-26", "valid_from": "2018-09-12", "draft": false, "title": "Anvil now lets you create interactive tables in seconds", "subject": "Anvil now lets you create interactive tables in seconds", "resendable": null, "priority": null, "send_interval": null, "from": {"name":"Shaun Taylor-Morgan","address":"shaun@anvil.works"}, "if": [], "category": "announcement", "plain_text": "Hey,\n\nAs an Anvil developer, chances are you'll have data in tables. And I'm sure there are\nmany cases where you just want to show the tables directly to your users.\n\nSo, by popular demand, we've made it even easier: I'd like to introduce our new Data Grid component.\n\nAs an example, I've built a full CRUD app in a single component! I've got data from a Data Table, displayed in a Data Grid, with a search box, page size selector, and widgets to add, edit, and delete rows. \n\nOpen this example in the Anvil editor and have a play:\n\n https://anvil.works/ide#clone:AK3JV6XAR2E5QG3U=P572O333N2MTS2LPDF2WF5FQ\n\nTo find out more, take a look at our announcement blog post:\n\n %%ANVIL_ORIGIN%%/blog/announcing-data-grids\n\nOr head straight to the tutorial on Getting Started With Data Grids:\n\n %%ANVIL_ORIGIN%%/blog/data-grids\n\nWhatever you're building with Anvil, I hope your apps are coming along well.\n\nAll the best,\nShaun\n\n--\n\nIf you don't want any more email from us, just click %%UNSUBSCRIBE_LINK%%.\n", "html": "\n\n \n \n\t\n \n \n \t\n\n

Hey,

\n\n

As an Anvil developer, chances are you’ll have data in tables. And I’m sure there are\n many cases where you just want to show the tables directly to your users.

\n\n

So, by popular demand, we’ve made it even easier: I’d like to introduce our new Data Grid component.

\n\n

As an example, I’ve built a full CRUD app in a single component! Here, I’ve got data from a Data Table, displayed in a Data Grid, with a search box, page size selector, and widgets to add, edit, and delete rows:

\n\n
\n\n\"Screenshot\n\n
\n\n

Open this example in the Anvil editor and have a play:

\n\n
Open Example App
\n


\n\n

To find out more, take a look at our announcement blog post.

\n\n
\nRead the blog post\n
\n\n

Or head straight to the Data Grid tutorials.

\n\n
\nView the tutorials\n
\n\n

Whatever you’re building with Anvil, I hope your apps are coming along well.

\n\n

All the best,\n Shaun

\n\n

\n\n

If you don’t want any more email from us, just click here.

\n\n \n" }, { "name": "announcing-email", "date": "2000-01-01 00:00:00 -0600", "tags": ["email","newsletter","interrupt"], "expires_on": "2018-08-21", "valid_from": "2018-07-18", "draft": false, "title": "Build Email-driven Apps, the Easy Way", "subject": "Build Email-driven Apps, the Easy Way", "resendable": null, "priority": null, "send_interval": 1, "from": {"name":"Meredydd Luff","address":"meredydd@anvil.works"}, "if": [], "category": "announcement", "plain_text": "Hi there,\n\nEmail is a central part of our digital lives. We send and receive email every day (you're reading one now!) Your web apps should be able to communicate by email too.\n\nAnvil already enables you to build full-stack web apps with nothing but Python. Now, you can build email-driven apps too. I'm delighted to announce the new Email Service for Anvil, which lets you send email with one function call, and receive email by writing one Python function.\n\nCheck out our code snippets, or our four-minute example video: %%ANVIL_ORIGIN%%/blog/email-driven-apps\n\nOr you can see our full reference docs: %%ANVIL_ORIGIN%%/doc/#email\n\nGo ahead, try it out! Visit: https://anvil.works/build\n\n\nAll the best,\n\nMeredydd\n--\n\nPS: Any questions? Just reply to this email! Sure, this is a mailing list, but this is my real personal address.\n\nIf you don't want any more email from us, just click %%UNSUBSCRIBE_LINK%%\n", "html": "\n\n \n \n\t\n \n \n \t

Hi there,

\n\n

Email is a central part of our digital lives. We send and receive email every day (you’re reading one now!) Your web apps should be able to communicate by email too.

\n\n

Anvil already enables you to build full-stack web apps with nothing but Python. Now, you can build email-driven apps too. I’m delighted to announce the new Email Service for Anvil, which lets you send email with one function call, and receive email by writing one Python function.

\n\n

Check out our code snippets, or our four-minute example video:

\n\n
\nOpen Examples\n
\n\n

Or you can see our full reference docs.

\n\n

Go ahead, try it out! Visit: https://anvil.works/build

\n\n

All the best,

\n\n

Meredydd

\n\n

PS: Any questions? Just reply to this email! Sure, this is a mailing list, but this is my real personal address.

\n\n

If you don’t want any more email from us, just click here to unsubscribe

\n\n \n" }, { "name": "announcing-forum", "date": "2000-01-01 00:00:00 -0600", "tags": ["email","newsletter","interrupt"], "expires_on": "2017-08-20", "valid_from": "2017-08-07", "draft": false, "title": "Have you seen our new forum?", "subject": "Have you seen our new forum?", "resendable": null, "priority": null, "send_interval": 1, "from": {"name":"Meredydd Luff","address":"meredydd@anvil.works"}, "if": [], "category": "announcement", "plain_text": "Hey,\n\nQuite a few of you have been asking for a community forum, where you can ask questions and meet fellow Anvil users. I'm pleased to say that we now have the Anvil Community Forum up and running, and we'd love you to join us!\n\nJoin in at:\nhttps://anvil.works/forum \n\n\nAll the best,\n\nMeredydd\n--\n\nPS: Any questions? Come find me on the forum :)\n\nIf you don't want any more email from us, just click %%UNSUBSCRIBE_LINK%%\n", "html": "\n\n \n \n\t\n \n \n \t

Hey,

\n\n

Quite a few of you have been asking for a community forum, where you can ask questions and meet fellow Anvil users. I’m pleased to say that we now have the Anvil Community Forum up and running, and we’d love you to join us!

\n\n

Join in at:\nhttps://anvil.works/forum

\n\n

All the best,

\n\n

Meredydd

\n\n

PS: Any questions? Come find me on the forum :)

\n\n

If you don’t want any more email from us, just click here

\n\n \n" }, { "name": "announcing-http-apis", "date": "2000-01-01 00:00:00 -0600", "tags": ["email","newsletter","interrupt"], "expires_on": "2017-08-06", "valid_from": "2017-07-17", "draft": false, "title": "New: Add an API to your Anvil app", "subject": "New: Add an API to your Anvil app", "resendable": null, "priority": null, "send_interval": null, "from": {"name":"Meredydd Luff","address":"meredydd@anvil.works"}, "if": [], "category": "announcement", "plain_text": "Hey,\n\nGreat news - you can now build HTTP APIs for your Anvil apps! Integrate with third-party services, native apps, and more.\n\nHere's all you need to make an API that returns JSON:\n\n @anvil.server.http_endpoint(\"/greet/:name\")\n def greet(name, **qs):\n return {'message': 'Hello, ' + name + '!'}\n\n\nCheck out our documentation:\n https://anvil.works/doc#http_apis\n\nOr open this example in Anvil:\n https://anvil.works/ide#clone:QFNEHKNZK2HXDBNS=3TGUZRUNGRTO6BWX2HSUK4BQ\n\n\nAll the best,\n\nMeredydd\n--\n\nPS: Any questions? Just reply to this email! Sure, this is a mailing list, but this is my real personal address.\n\nIf you don't want any more email from us, just click %%UNSUBSCRIBE_LINK%%\n", "html": "\n\n

Hey,

\n\n

Great news - you can now build HTTP APIs for your Anvil apps! Integrate with third-party services, native apps, and more.

\n\n

Here’s all you need to make an API that returns JSON:

\n\n

\"Click

\n\n

Check out our documentation, or open this example in Anvil and try it out yourself!

\n\n

All the best,

\n\n

Meredydd

\n\n

PS: Any questions? Just reply to this email! Sure, this is a mailing list, but this is my real personal address.

\n\n

If you don’t want any more email from us, just click here

\n" }, { "name": "announcing-plots", "date": "2000-01-01 00:00:00 -0600", "tags": ["email","newsletter","interrupt"], "expires_on": "2017-08-22", "valid_from": "2017-07-31", "draft": false, "title": "New: Add Plotly plots to your Anvil app", "subject": "New: Add Plotly plots to your Anvil app", "resendable": null, "priority": null, "send_interval": null, "from": {"name":"Ian Davies","address":"ian@anvil.works"}, "if": [], "category": "announcement", "plain_text": "Hi there,\n\nLots of people have been asking for interactive charts and graphs in their Anvil apps, so we're delighted to announce that we now have full support for Plotly plots.\n\nPlots are simple to make, and can be customized in just a few lines of code. See our announcement blog post for pictures and examples:\n\n https://anvil.works/blog/plots\n\nCheck out our documentation:\n https://anvil.works/doc#http_apis\n\nOr open an example app in Anvil directly:\n https://anvil.works/ide#clone:BGKCEXCMQATZDP24=NZ7L635BYGIEP5SY7HJUQSO2\n\n\nAll the best,\n\nIan\n--\n\nPS: Any questions? Just reply to this email! Sure, this is a mailing list, but this is my real personal address.\n\nIf you don't want any more email from us, just click %%UNSUBSCRIBE_LINK%%\n", "html": "\n\n

Hi there,

\n\n

Lots of people have been asking for interactive charts and graphs in their Anvil apps, so we’re delighted to announce that we now have full support for Plotly plots.

\n\n

Plots like this are simple to make, and can be customized in just a few lines of code:

\n\n

\"Click

\n\n

Check out our documentation, or open this example in Anvil and try it out yourself!

\n\n

All the best,

\n\n

Ian

\n\n

PS: Any questions? Just reply to this email! Sure, this is a mailing list, but this is my real personal address.

\n\n

If you don’t want any more email from us, just click here

\n" }, { "name": "announcing-table-media", "date": "2000-01-01 00:00:00 -0600", "tags": ["email","newsletter","interrupt"], "expires_on": "2017-11-04", "valid_from": "2017-10-04", "draft": false, "title": "Storing images and files in data tables", "subject": "Anvil - now with images and files in tables", "resendable": null, "priority": null, "send_interval": null, "from": {"name":"Ian Davies","address":"ian@anvil.works"}, "if": [], "category": "announcement", "plain_text": "Hi there,\n\nWe're delighted to announce that you can now store media (images, binary files, etc)\ndirectly in Anvil Data Tables. Gone are the days of tracking Google Drive files or hotlinking\nto data stored elsewhere!\n\n- Upload files into a table row\n\n # Ask the user to choose an image with a FileLoader component, then...\n\n def file_loader_1_change(self, files, **kwargs):\n # Store the image the user chose in the 'pic' column of a new table row.\n app_tables.my_table.add_row(pic=files[0])\n\n- Download or display files from a table row\n\n # Get the first row from a table\n table_row = app_tables.my_table.search()[0]\n\n # Allow the user to download media from that row from a link\n self.link_1.url = table_row['pic'].url\n\n # Display the image from that row on an Image component\n self.image_1.source = table_row['pic']\n\nIt's that easy! See our blog post for more information:\n\n %%ANVIL_ORIGIN%%/blog/announcing-table-media\n\n\nAll the best,\n\nIan\n\n--\nPS: If you want to know more, just hit reply - this is my real email address.\n\nIf you don't want any more email from us, just click %%UNSUBSCRIBE_LINK%%\n", "html": "\n\n \n \n\t\n \n \n \t\n\n

Hi there,

\n\n

We’re delighted to announce that you can now store media (images, binary files, etc) directly in Anvil Data Tables. Gone are the days of tracking Google Drive files or hotlinking to data stored elsewhere!

\n\n\n\n

It’s that easy! See our blog post for more information.

\n\n
\n Read the blog post\n
\n\n

All the best,

\n\n

Ian

\n\n

\n\n

PS: If you want to know more, just hit reply - this is my real email address.

\n\n

If you don’t want any more email from us, just click here.

\n\n \n" }, { "name": "announcing-users", "date": "2000-01-01 00:00:00 -0600", "tags": ["email","newsletter","interrupt"], "expires_on": "2017-04-30", "valid_from": "2017-04-02", "draft": false, "title": "We just made multi-user apps easier", "subject": "We just made multi-user apps easier", "resendable": null, "priority": null, "send_interval": 1, "from": {"name":"Meredydd Luff","address":"meredydd@anvil.works"}, "if": [], "category": "announcement", "plain_text": "Hey,\n\nWe don't email you about every new Anvil feature, but I think this one's worth it: As of today, you can add user registration and login into your app with _one line of code_.\n\nThis means less time building login forms, and more time building things that matter.\n\nCheck out our walkthrough video: %%ANVIL_ORIGIN%%/blog/multi-user-apps\n\nFull docs: %%ANVIL_ORIGIN%%/doc/#users\n\nGo ahead, try it out! Visit: https://anvil.works/ide\n\n\nAll the best,\n\nMeredydd\n--\n\nPS: Any questions? Just reply to this email! Sure, this is a mailing list, but this is my real personal address.\n\nIf you don't want any more email from us, just click %%UNSUBSCRIBE_LINK%%\n", "html": "\n\n \n \n\t\n \n \n \t

Hey,

\n\n

We don’t email you about every new Anvil feature, but I think this one’s worth it: As of today, you can add user registration and login into your app with one line of code.

\n\n

This means less time building login forms, and more time building things that matter.

\n\n

Click here to check out our video demo:

\n\n

\n\"Click
\n%%ANVIL_ORIGIN%%/blog/multi-user-apps

\n\n

Go ahead, try it out! (Or you can read the full docs here)

\n\n

All the best,

\n\n

Meredydd

\n\n

PS: Any questions? Just reply to this email! Sure, this is a mailing list, but this is my real personal address.

\n\n

If you don’t want any more email from us, just click here

\n\n \n" }, { "name": "introducing-hobby-plan", "date": "2000-01-01 00:00:00 -0600", "tags": ["email"], "expires_on": "2018-07-07", "valid_from": "2018-06-27", "draft": false, "title": "Building Web Apps with Anvil Just Got Less Expensive - Introducing the Hobby Plan", "subject": "Building Web Apps with Anvil Just Got Less Expensive - Introducing the Hobby Plan", "resendable": null, "priority": 200, "send_interval": 1, "from": {"name":"Anvil","address":"contact@anvil.works"}, "if": ["~q/pro-user","q/account-age<90","q/account-age>7","ab/offer-hobby-plan"], "category": "announcement", "plain_text": "Hi there,\n\nWe built Anvil to make it easy for everyone to create web apps -- and it’s\nbeen great watching that happen, as businesses big and small build apps on\nAnvil faster than ever before. But while our plans offer great value for\nbusiness users, hobbyists have told us that the full Individual plan was a\nhard first step. And we've listened!\n\nToday, we’re introducing the Hobby Plan. For $15/month, you can use the\nfull power of Anvil: Full Python servers with all modules, our powerful\nuser authentication, and more. We've included enough CPU time and database\nstorage to start building real apps.\n\nThis is a limited beta, and we’re offering it to you now before we roll it\nout publicly. Click here to sign up for the Anvil Hobby Plan:\n\nhttps://anvil.works/build#start-plan:hobby-monthly\n\nYou’re already on the Free plan. Here’s what you get by upgrading:\n\n\n+------------------------------------------------------------------------+\n| FREE HOBBY INDIVIDUAL |\n| |\n| Build and publish apps YES YES YES |\n| |\n| Full Python server (2.7 or 3.6) YES YES |\n| |\n| Remove Anvil banner YES YES |\n| |\n| Uplink YES YES |\n| |\n| Custom Domain Name YES |\n| |\n| Remove all Anvil branding YES |\n| |\n| Compute Units 0.1 0.1 1 |\n| |\n| Database storage 10 MB 100 MB 1 GB |\n| |\n| Price per month $0 $15 $49 |\n+------------------------------------------------------------------------+\n\nUpgrade to the Hobby Plan here:\nhttps://anvil.works/build#start-plan:hobby-monthly\n\nUpgrade to the full Individual Plan here:\nhttps://anvil.works/build#start-plan:individual\n\nIf you have any more questions about the Hobby plan -- or any other plan\n-- just hit Reply to get in touch with us.\n\nDon’t forget that we have plans available for everyone from the hobbyist\nup to the largest Enterprise -- see https://anvil.works/pricing, or drop\nus a line to discuss your requirements. Whether you’re looking for advice\nabout the different plans, or a complete on-site installation with custom\nintegrations, we’re here to help.\n\n\nAll the best,\n\nThe Anvil team\n\n--\n\nIf you don't want any more email from us, just click here:\n%%UNSUBSCRIBE_LINK%%\n", "html": "\n\n \n \n\t\n \n \n \t

Hi there,

\n\n

We built Anvil to make it easy for everyone to create web apps – and it’s been great watching that happen, as businesses big and small build apps on Anvil faster than ever before. But while our plans offer great value for business users, hobbyists have told us that the full Individual plan was a hard first step. And we’ve listened!

\n\n

Today, we’re introducing the Hobby Plan. For $15/month, you can use the full power of Anvil: Full Python servers with all modules, our powerful user authentication, and more. We’ve included enough CPU time and database storage to start building real apps.

\n\n

This is a limited beta, and we’re offering it to you now before we roll it out publicly. Click here to sign up for the Anvil Hobby Plan:

\n\n
\nSign Up Now\n
\n\n

You’re already on the Free plan. Here’s what you get by upgrading:

\n\n
\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
FreeHobbyIndividual
Build and publish apps
Full Python server (2.7 or 3.6)
Remove Anvil banner
Uplink
Custom Domain Name
Remove all Anvil branding
Compute Units0.10.11
Database Storage10 MB100 MB1 GB
Price per month$0$15$49
Log in\n Sign Up\n \n Sign Up\n
\n
\n\n

If you have any more questions about the Hobby plan – or any other plan – just hit Reply to get in touch with us.

\n\n

Don’t forget that we have plans available for everyone from the hobbyist up to the largest Enterprise – see https://anvil.works/pricing, or drop us a line to discuss your requirements. Whether you’re looking for advice about the different plans, or a complete on-site installation with custom integrations, we’re here to help.

\n\n

All the best,

\n\n

The Anvil team

\n\n

\n\n

If you don’t want any more email from us, just click here

\n\n \n" }, { "name": "announcing-queries", "date": "2010-01-01 00:00:00 -0600", "tags": ["email","newsletter","interrupt"], "expires_on": "2019-01-01", "valid_from": "2019-01-01", "draft": false, "title": "Anvil's Data Tables now have a rich query language", "subject": "Anvil's Data Tables now have a rich query language", "resendable": null, "priority": null, "send_interval": null, "from": {"name":"Shaun Taylor-Morgan","address":"shaun@anvil.works"}, "if": [], "category": "announcement", "plain_text": "\n\nHey,\n\nWe've just upgraded Anvil to make data storage much more powerful.\n\nData Tables already give you a Python-based system for storing and retrieving data.\nThere's also a graphical interface to make designing databases even quicker.\n\nThis upgrade gives you a library of query operators. You pass them to the search() method\nwhen you access your data.\n\nTo get all restaurants rated higher than 2 stars:\n\n app_tables.restaurants.search(\n rating=q.greater_than(2)\n )\n\nTo get all menu items that include the string 'pizza':\n\n app_tables.menu.search(\n dish_name=q.ilike('%pizza%')\n )\n\nTo perform an intelligent search within natural language text:\n\n app_tables.reviews.search(\n review_text=q.full_text_match('Easy to find')\n )\n\nYou can combine query operators together to build complex queries when you need them. To find good restaurants in London, or any outside of London:\n \n app_tables.restaurants.search(\n q.any_of(\n location=q.not_('London'),\n rating=q.greater_than(2),\n )\n )\n\nIt's live right now. Copy an example app to your account and try out some queries of your own:\n\n %%ANVIL_ORIGIN%%/build#clone:6LWV7TMIL4ON5WK6=OVOJIF6QUDN4TAWLBHKULHR5\n \nTo find out more, check out the tutorial:\n\n %%ANVIL_ORIGIN%%/blog/querying-data-tables\n\nWhatever you're building right now, we hope this helps you make it even better.\n\nAll the best,\n\nShaun\n\n--\n\nIf you don't want any more email from us, just click %%UNSUBSCRIBE_LINK%%.\n", "html": "\n\n \n \n\t\n \n \n \t

Hey,

\n\n

We’ve just upgraded Anvil to make data storage much more powerful.

\n\n

Data Tables already give you a Python-based system for storing and retrieving data.\n There’s also a graphical interface to make designing databases even quicker.

\n\n

This upgrade gives you a library of query operators. You pass them to the search() method\n when you access your data.

\n\n

To get all restaurants rated higher than 2 stars:

\n\n
    app_tables.restaurants.search(\n      rating=q.greater_than(2)\n    )\n
\n\n

To get all menu items that include the string ‘pizza’:

\n\n
    app_tables.menu.search(\n      dish_name=q.ilike('%pizza%')\n    )\n
\n\n

To perform an intelligent search within natural language text:

\n\n
    app_tables.reviews.search(\n      review_text=q.full_text_match('Easy to find')\n    )\n
\n\n

You can combine query operators together to build complex queries when you need them. To find good restaurants in London, or any outside of London:

\n\n
    app_tables.restaurants.search(\n      q.any_of(\n        location=q.not_('London'),\n        rating=q.greater_than(2),\n      )\n    )\n
\n\n

It’s live right now. Copy an example app to your account and try out some queries of your own. To find out more, have a look at the tutorial.

\n\n

Whatever you’re building right now, we hope this helps you make it even better.

\n\n

All the best,

\n\n

Shaun

\n\n

\n\n

If you don’t want any more email from us, just click %%UNSUBSCRIBE_LINK%%.

\n\n \n" }, { "name": "newsletter-2018-03", "date": "2010-01-01 00:00:00 -0600", "tags": ["email","newsletter","interrupt"], "expires_on": "2018-04-20", "valid_from": "2018-03-27", "draft": false, "title": "Y Combinator prototypes, New tutorials, and More Features - Anvil April update", "subject": "Y Combinator prototypes, New tutorials, and More Features - Anvil April update", "resendable": null, "priority": null, "send_interval": 1, "from": {"name":"Meredydd Luff","address":"meredydd@anvil.works"}, "if": [], "category": "newsletter", "plain_text": "Hi everyone,\n\n A lot has happened in Anvil in the last month, so it’s time for an update:\n\n 1. Building Y Combinator Startups in Anvil\n\n How fast can you build a startup? We built full, working versions of two\n startups from the famous incubator - in just an hour or two each. See\n how easily you can build a startup with Anvil:\n\n * Pay for your parking with a smartphone (Meeter Feeder, YC Summer 16)\n (https://anvil.works/blog/one-yc-startup-a-day) \n\n * A personal assistant for everyone - text a concierge and let them do it\n all for you (Magic, YC Winter 15)\n (https://anvil.works/blog/yc-mvp-magic) \n\n ----\n\n 2. New Learning Centre\n\n We’ve reorganised the Anvil documentation, and added a bunch of new\n how-to guides to our “Cookbook” section. Did you know...\n\n * How to use Matplotlib with Anvil?\n (https://anvil.works/blog/matplotlib-with-anvil)\n\n * How to use the the GitHub REST API?\n (https://anvil.works/blog/github-storage)\n\n * How to drive a DropDown from a data table?\n (https://anvil.works/blog/dropdown-tables)\n\n * That the Users service can be heavily customised?\n (https://anvil.works/blog/custom-user-auth)\n\n Find all these and more at https://anvil.works/learn.\n\n ----\n\n 3. Do more with Anvil\n\n We’re always making Anvil better. Here are some little improvements\n you might not have seen:\n\n\n * We've made it even easier to download files from your Anvil app. You\n can set the `url` property of a Link component to any Media object,\n even a temporary one. (https://anvil.works/doc#link)\n\n * Two-factor authentication - secure your access to the Anvil IDE by\n enabling two-factor auth on your account today.\n (Go to https://anvil.works/build and choose My Account.)\n\n * The Client Uplink lets you connect un-trusted code to your Anvil\n apps, just like the Uplink. Building the Internet of Things just got\n easier! (Read the docs: https://anvil.works/doc#uplink)\n\n * Customise your Stripe credit card form - you can now set an\n `icon_url` with anvil.stripe.checkout().\n (Read the docs: https://anvil.works/doc#stripe)\n\n ----\n\n 4. Show and Tell in the Anvil forums\n\n See what other people have built, and share your own apps, in the Anvil\n forums (https://anvil.works/forum). Ask questions, get help, and get\n inspired.\n\n I look forward to seeing you there!\n\n\n Meredydd\n --\n\n PS: We're hiring a Developer at Large! If you want to help the world\n build awesome things with Anvil, check out https://anvil.works/jobs.\n\n If you don't want any more email from us, just click here:\n %%UNSUBSCRIBE_LINK%%\n", "html": "\n\n \n \n\t\n \n \n \t

Hi everyone,

\n\n

A lot has happened in Anvil in the last month, so it’s time for an update:

\n\n

1. Building Y Combinator Startups in Anvil

\n\n

How fast can you build a startup? We built full, working versions of two startups from the famous incubator - in just an hour or two each. See how easily you can build a startup with Anvil:

\n\n\n\n

2. New Learning Centre

\n\n

We’ve reorganised the Anvil documentation, and added a bunch of new how-to guides to our “Cookbook” section. Did you know…

\n\n\n\n

Find all these and more at anvil.works/learn.

\n\n

3. Do more with Anvil

\n\n

We’re always making Anvil better. Here are some little improvements you might not have seen:

\n\n\n\n

4. Show and Tell in the Anvil forums

\n\n

See what other people have built, and share your own apps, in the Anvil forums. Ask questions, get help, and get inspired.

\n\n

I look forward to seeing you there!

\n\n

Meredydd

\n\n

PS: We’re hiring a Developer at Large! If you want to help the world build awesome things with Anvil, check out anvil.works/jobs

\n\n

If you don’t want any more email from us, just click here

\n\n \n" }, { "name": "newsletter-2018-05", "date": "2010-01-01 00:00:00 -0600", "tags": ["email","newsletter","interrupt"], "expires_on": "2018-05-26", "valid_from": "2018-05-09", "draft": false, "title": "Object Storage, Prettier Apps, and we're Hiring - Anvil May update", "subject": "Object Storage, Prettier Apps, and we're Hiring - Anvil May update", "resendable": null, "priority": null, "send_interval": 1, "from": {"name":"Meredydd Luff","address":"meredydd@anvil.works"}, "if": [], "category": "newsletter", "plain_text": "Hi there,\n\nIt was great meeting everyone at PyCon, and the crowds around our table were awesome! Check out my 5-minute talk from the conference:\nhttps://anvil.works/blog/pycon18-making-the-web-more-pythonic\n\nMeanwhile, it’s been another monster month for us. Here’s what’s new:\n\n\n**1. Beautiful apps: New Material Design theme**\n\nWe've published a new Material Design theme! We've given our components a facelift and added swappable colour schemes, so it now even easier to build beautiful apps.\n\n(Don’t worry, the old theme is still there - it’s now called “Classic”.)\n\n\n**2. Simple objects in Data Tables**\n\nIf you want to store richer data, you can now add “Simple Object” columns to your Data Tables. These can store strings, numbers, lists, or dicts - that's any JSON object. And you can search inside them with a powerful query system.\n\nFind out more on our blog: https://anvil.works/blog/simple-object-storage\n\n\n**3. Want to work at Anvil?**\n\nWe’re hiring a “Developer at Large” to help people build awesome things with Anvil! If you’re in the UK and interested in joining us, we'd love to hear from you. Read more at https://anvil.works/jobs\n\n\n**4. Other updates**\n\nAs always, we’re improving Anvil all the time. Here are a few things you might have missed:\n\n* Easier code navigation - you can hold down the Ctrl key and click on a function or variable to jump to its definition.\n\n* The new [FlowPanel](https://anvil.works/doc#flowpanel) lets you lay out components side-to-side. It’s great for grouping buttons, links or labels right next to each other.\n\n* We’ve made it easier to drag and drop Link components, so it’s clearer whether you’re dropping something next to a Link or inside it. (I love this when I’m building sidebars for navigation!)\n\n* More options for displaying images - shrink to fit, zoom to fill, or display your image at its original size no matter how big your page is.\n\n* Want your components closer together, or further apart? Now you can control the spacing in a ColumnPanel with the `column_spacing` property.\n\n* We’ve made the Toolbox easier to navigate by highlighting the most commonly used components.\n\n* Fixed-width layouts are easier now too, with the XYPanel. Most of the time, you won’t be needing a fixed-width layout, but when you do, it's right there.\n\n\nHappy coding!\n\nAll the best,\n\nMeredydd\n\n--\n\nPS: Did I mention we're hiring? If you want to help people build awesome things with Anvil, check out https://anvil.works/jobs\n\nIf you don't want any more email from us, just click here:\n%%UNSUBSCRIBE_LINK%%\n", "html": "\n\n \n \n\t\n \n \n \t

Hi there,

\n\n

It was great meeting everyone at PyCon, and the crowds around our table were awesome! Check out my 5-minute talk from the conference: Making the Web More Pythonic

\n\n

Meanwhile, it’s been another monster month for us. Here’s what’s new:

\n\n

1. Beautiful apps: New Material Design theme

\n\n

We’ve published a new Material Design theme! We’ve given our components a facelift and added swappable colour schemes, so it now even easier to build beautiful apps.

\n\n

(Don’t worry, the old theme is still there - it’s now called “Classic”.)

\n\n

2. Simple objects in Data Tables

\n\n

If you want to store richer data, you can now add “Simple Object” columns to your Data Tables. These can store strings, numbers, lists, or dicts - that’s any JSON object. And you can search inside them with a powerful query system.

\n\n

Find out more on our blog: https://anvil.works/blog/simple-object-storage

\n\n

3. Want to work at Anvil?

\n\n

We’re hiring a “Developer at Large” to help people build awesome things with Anvil! If you’re in the UK and interested in joining us, we’d love to hear from you. Read more at https://anvil.works/jobs

\n\n

4. Other updates

\n\n

As always, we’re improving Anvil all the time. Here are a few things you might have missed:

\n\n\n\n

Happy coding!

\n\n

All the best,

\n\n

Meredydd

\n\n

\n\n

PS: Did I mention we’re hiring? If you want to help people build awesome things with Anvil, check out https://anvil.works/jobs

\n\n

If you don’t want any more email from us, just click here

\n\n \n" }, { "name": "newsletter-2018-07", "date": "2010-01-01 00:00:00 -0600", "tags": ["email","newsletter","interrupt"], "expires_on": "2018-08-02", "valid_from": "2018-07-24", "draft": false, "title": "Single Sign-On, Email-driven apps, EuroPython - Anvil July update", "subject": "Single Sign-On, Email-driven apps, EuroPython - Anvil July update", "resendable": null, "priority": null, "send_interval": 1, "from": {"name":"Meredydd Luff","address":"meredydd@anvil.works"}, "if": [], "category": "newsletter", "plain_text": "Hi there,\n\nIt was great meeting everyone at EuroPython! Next up: PyCon UK in Cardiff.\nJoin us there, where we'll be showing everyone how to build full-stack web\napps with nothing but Python.\n\nMeanwhile, here's what's new this month:\n\n\n**1. Single Sign-On with Microsoft**\n\nDoes your organisation use Office 365? Now your users can log into your apps\nwith their Microsoft accounts! Microsoft login (or, to give it its official\nname, Azure Active Directory) is available for all our Business plan customers.\n\nClick here for more info: https://anvil.works/blog/microsoft-single-sign-on\n\n\n**2. Building Email-Driven Apps with Anvil**\n\nWe've already made it easy to build web-based apps. Now it's just as easy\nto send and receive email from your code.\n\nCheck out the code samples, or watch our demo video to see me build an\nemail-receiving app in just a couple of minutes:\nhttps://anvil.works/blog/email-driven-apps\n\n\n**3. New Documentation Search**\n\nWe've made it easier than ever to search the Anvil documentation. Next\ntime you're in the Anvil editor, check out the search box in the toolbar.\nYou can search our tutorials, reference documentation, and selected\nposts from the Community Forum.\n\n(Speaking of the Community Forum, we'd love to hear your feedback. Come\njoin us: https://anvil.works/forum)\n\n\n**4. Other updates**\n\nAs always, we're improving Anvil all the time. Here are a few highlights:\n\n* Validating user input just got a lot easier, with our new form validation\n library. Check it out:\n https://anvil.works/forum/t/form-validation-with-anvil/1514\n\n* We've introduced a new domain for your apps! Now, by default, your apps\n are available at [something].anvil.app. (Don't worry, the old\n [something].anvilapp.net links still work.)\n\n* If you're on a flaky internet connection, you may notice that saving your\n apps is a lot smoother these days.\n\n* If you haven't met him on the forums yet, give a warm welcome to Shaun,\n our new developer evangelist!\n\n\n\nHappy coding!\n\nAll the best,\n\nMeredydd\n\n--\n\nIf you don't want any more email from us, just click here:\n%%UNSUBSCRIBE_LINK%%\n", "html": "\n\n \n \n\t\n \n \n \t

It was great meeting everyone at EuroPython! Next up:\nPyCon UK in Cardiff. Join us there, where we’ll\nbe showing everyone how to build full-stack web apps with nothing but Python!

\n\n

Meanwhile, here’s what’s new this month:

\n\n

1. Single Sign-On with Microsoft

\n\n

Does your organisation use Office 365? Now your users can log into your apps\nwith their Microsoft accounts! Microsoft login (or, to give it its official\nname, Azure Active Directory) is available for all our Business plan customers.

\n\n

Click here to read more.

\n\n

2. Building Email-Driven Apps with Anvil

\n\n

We’ve already made it easy to build web-based apps. Now it’s just as easy\nto send and receive email from your code, with our new\nEmail Service.

\n\n

Check out the code samples, or watch our demo video to see me build an\nemail-receiving app in just a couple of minutes.

\n\n

3. New Documentation Search

\n\n

We’ve made it easier than ever to search the Anvil documentation. Next\ntime you’re in the Anvil editor, check out the search box in the toolbar.\nYou can search our tutorials, reference documentation, and selected\nposts from the Community Forum.

\n\n

(Speaking of the Community Forum, we’d love to hear your feedback. Come\njoin us there!)

\n\n

4. Other updates

\n\n

As always, we’re improving Anvil all the time. Here are a few highlights:

\n\n\n\n

Happy coding!

\n\n

All the best,

\n\n

Meredydd

\n\n

\n\n

If you don’t want any more email from us, just click here

\n\n \n" }, { "name": "newsletter-2018-08", "date": "2010-01-01 00:00:00 -0600", "tags": ["email","newsletter","interrupt"], "expires_on": "2018-08-31", "valid_from": "2018-08-23", "draft": false, "title": "We're going to PyCon UK - but How many T-Shirts do we need? - Anvil August update", "subject": "We're going to PyCon UK - but How many T-Shirts do we need? - Anvil August update", "resendable": null, "priority": null, "send_interval": 1, "from": {"name":"Meredydd Luff","address":"meredydd@anvil.works"}, "if": [], "category": "newsletter", "plain_text": "Hi there,\n\nAre you going to PyCon UK? We'll be there, showing people how to build\nfull-stack web apps with nothing but Python, at our stall in the Marble\nHall. As always, we'll give out a nifty Anvil T-shirt to anyone who\nbuilds an app with Anvil during the conference.\n\nThis time, we've been doing some thinking about how many T-shirts we\nneed to bring. The answer involves a little stats, a little SciPy,\nand a whole lot of Python:\n\nhttps://anvil.works/blog/how-many-t-shirts-to-a-developer-conference\n\n\nMeanwhile, here's what's new in Anvil this month:\n\n**1. Get the Best out of Material Design**\n\nWe've published a guide to making your apps look their best with Anvil's\nMaterial Design theme. Change your colour palette, build a sidebar menu,\nor use custom CSS to control your app's appearance. Click here to read\nthe guide:\n\nhttps://anvil.works/blog/using-material-design\n\n\n**2. Direct SQL access to data tables**\n\nAnvil's internal database is powered by Postgres. Now, if you're a\nDedicated Server user, you can connect directly to it and write queries\nwith SQL! Look for the check-box in the Data Table configuration.\n\n\n**3. Embed your Anvil apps in other websites**\n\nWe've made it easier to embed Anvil apps in other websites. When you\nopen the Publish dialog, you now get a checkbox for \"Embed this app in\"\na web page\". Enable it, then copy and paste the HTML snippet into any\nwebsite to include your Anvil app there!\n\n\n**4. The Free Plan is bigger and better!**\n\nIt's great to see what hobby users, prototypers, educators and students\nhave been doing with Anvil. We've made Anvil even better for them, by\nenabling more of our advanced features - like the Uplink and the Users\nservice - on the Free plan. Check it out!\n\n(You'll still need to upgrade for a full Python server environment, to\nremove the Anvil banners, or to use your own domain name, though.)\n\n\n**5. Other Updates**\n\nAs always, we're making Anvil better all the time. Here are a few things\nyou might have missed:\n\n* We've added a few more example apps to our examples page\n (https://anvil.works/learn/examples) - including the time we built\n prototypes of two Silicon Valley startups in a couple of hours each!\n (https://anvil.works/blog/one-yc-startup-a-day)\n\n* If you're storing encrypted App Secrets\n (https://anvil.works/blog/app-secrets) in your Anvil app, you can now\n enter longer, multi-line strings\n\n* The modules for our Google and Facebook integrations have moved -\n they're now `anvil.google` and `anvil.facebook`. Don't worry, your\n existing apps still work!\n\n* Your apps now load a little faster :)\n\n\nHappy coding!\n\nAll the best,\n\nMeredydd\n\n--\n\nIf you don't want any more email from us, just click here:\n%%UNSUBSCRIBE_LINK%%\n", "html": "\n\n \n \n\t\n \n \n \t

Hi there,

\n\n

Are you going to PyCon UK in Cardiff next month? We’ll be there, showing people how to build\nfull-stack web apps with nothing but Python, at our stall in the Great\nHall. As always, we’ll give out a nifty Anvil T-shirt to anyone who\nbuilds an app with Anvil during the conference.

\n\n

This time around, we’ve been thinking about how many T-shirts we need to bring. The answer involved a little stats, a little SciPy,\nand a whole lot of Python, so we wrote it up as a blog post. Check it out: How Many T-shirts Do I Need for a Developer Conference?

\n\n

Meanwhile, here’s what’s new in Anvil this month:

\n\n

1. Get the Best out of Material Design

\n\n

We’ve published a guide to making your apps look their best with Anvil’s\nMaterial Design theme. Change your colour palette, build a sidebar menu,\nor use custom CSS to control your app’s appearance.

\n\n

Click here to read\nthe guide

\n\n

2. Direct SQL access to data tables

\n\n

Anvil’s internal database is powered by Postgres. Now, if you’re a\nDedicated Server user, you can connect directly to it and write queries\nwith SQL! Look for the check-box in the Data Table configuration:

\n\n

\n\n

3. Embed your Anvil apps in other websites

\n\n

We’ve made it easier to embed Anvil apps in other websites. When you\nopen the Publish dialog, you now get a checkbox for “Embed this app in”\na web page”. Enable it, then copy and paste the HTML snippet into any\nwebsite to include your Anvil app there!

\n\n

\n\n

4. The Free Plan is bigger and better!

\n\n

It’s great to see what hobby users, prototypers, educators and students\nhave been doing with Anvil. We’ve made Anvil even better for them, by\nenabling more of our advanced features - like the Uplink and the Users\nservice - on the Free plan. Check it out!

\n\n

(You’ll still need to upgrade for a full Python server environment, to\nremove the Anvil banners, or to use your own domain name, though.)

\n\n

5. Other Updates

\n\n

As always, we’re making Anvil better all the time. Here are a few things\nyou might have missed:

\n\n\n\n

Happy coding!

\n\n

All the best,

\n\n

Meredydd

\n\n

\n\n

If you don’t want any more email from us, just click here

\n\n \n" }, { "name": "newsletter-2018-09", "date": "2010-01-01 00:00:00 -0600", "tags": ["email","newsletter","interrupt"], "expires_on": "2018-10-01", "valid_from": "2018-09-26", "draft": false, "title": "Want us at your local meetup? Anvil September update", "subject": "Want us at your local meetup? Anvil September update", "resendable": null, "priority": null, "send_interval": 1, "from": {"name":"Meredydd Luff","address":"meredydd@anvil.works"}, "if": [], "category": "newsletter", "plain_text": "Hi there,\n\nDo you attend a coding, Python or data-science meetup?\nWould you like Anvil to come and present about building full-stack\nweb apps with nothing but Python? We're presenting at a whole bunch\nof meetups and events over the next few months, so drop me a line\nand let's make it happen!\n\nMeanwhile, here's what's new in Anvil this month:\n\n**Data Grids**\n\nOf course, this month's big news is the release of Data Grids. They\nmake it easy to build apps where you display and interact with tables\nof data. It's our most-requested feature, and it's great to see what\npeople are building with it.\n\nCheck out our blog post:\nhttps://anvil.works/blog/announcing-data-grids\n\nAnd our tutorial: Getting Started with Data Grids\nhttps://anvil.works/blog/data-grid-getting-started\n\n\n**Enforcing secure passwords for your users**\n\nPassword security is more important than ever. That's why we've just\nintroduced the \"Require Secure Passwords\" option in Anvil's user\nauthentication service (https://anvil.works/blog/multi-user-apps).\n\nWhen you select \"Require Secure Passwords\", Anvil prevents your users\nfrom re-using a password that's too short, or has already been leaked\nin a data breach. We can check for data breaches without revealing\npasswords to anyone, thanks to the \"k-anonymity\" feature from\nHave I Been Pwned. You can learn more about how it works in this blog\npost from Cloudflare:\nhttps://blog.cloudflare.com/validating-leaked-passwords-with-k-anonymity/\n\n\"Require Secure Passwords\" is enabled by default for all new apps, and\nyou should turn it on for your existing apps too!\n\n\n**Tooltips**\n\nAnother much-requested feature. Now, almost every component has a\n`tooltip` property. Set it to display some extra text when you hover\nyour mouse over the component!\n\n\n**On-Site Installation**\n\nDid you know that you can install Anvil on your own servers? We've\nbeen improving the installation and management tools, and you can now\nget an on-site trial instance running in 10 minutes or less. To learn\nmore about on-site enterprise installations, contact us at enterprise@anvil.works.\n\n\n\nThat's it for this month. If you've got any questions, come and ask\nus on the forum: https://anvil.works/forum. Happy coding!\n\nAll the best,\n\nMeredydd\n\n--\n\nIf you don't want any more email from us, just click here:\n%%UNSUBSCRIBE_LINK%%\n", "html": "\n\n \n \n\t\n \n \n \t

Hi there,

\n\n

Do you attend a coding, Python or data-science meetup?\nWould you like Anvil to come and present about building full-stack web apps with nothing but Python? We’re presenting at a whole bunch of meetups and events over the next few months, so drop me a line and let’s make it happen!

\n\n

Meanwhile, here’s what’s new in Anvil this month:

\n\n

Data Grids

\n\n

Of course, this month’s big news is the release of Data Grids. They\nmake it easy to build apps where you display and interact with tables\nof data. It’s our most-requested feature, and it’s great to see what\npeople are building with it.

\n\n

Check out our blog post, and our tutorial: Getting Started with Data Grids

\n\n

Enforcing secure passwords for your users

\n\n

Password security is more important than ever. That’s why we’ve just\nintroduced the “Require Secure Passwords” option in Anvil’s user authentication\nservice.

\n\n

When you select “Require Secure Passwords”, Anvil prevents your users from re-using a password that’s too short, or has already been leaked in a data breach. We can check for data breaches without revealing passwords to anyone, thanks to the k-anonymity feature from\nHave I Been Pwned. You can learn more about how it works in this blog post from Cloudflare.

\n\n

“Require Secure Passwords” is enabled by default for all new apps, and\nyou should turn it on for your existing apps too!

\n\n

Tooltips

\n\n

Another much-requested feature. Now, almost every component has\na tooltip property. Set it to display some extra text when you hover\nyour mouse over the component!

\n\n

On-Site Installation

\n\n

Did you know that you can install Anvil on your own servers? We’ve\nbeen improving the installation and management tools, and you can now\nget an on-site trial instance running in 10 minutes or less. To learn\nmore about on-site enterprise installations, contact us at enterprise@anvil.works.

\n\n


\n\n

That’s it for this month. If you’ve got any questions, come and ask\nus on the forum: https://anvil.works/forum. Happy coding!

\n\n

All the best,

\n\n

Meredydd

\n\n

\n\n

If you don’t want any more email from us, just click here

\n\n \n" }, { "name": "newsletter-2018-11", "date": "2010-01-01 00:00:00 -0600", "tags": ["email","newsletter","interrupt"], "expires_on": "2018-11-30", "valid_from": "2018-11-20", "draft": false, "title": "Coming to a Meetup Near You", "subject": "We're coming to a meetup near you - Anvil November update", "resendable": null, "priority": null, "send_interval": 1, "from": {"name":"Meredydd Luff","address":"meredydd@anvil.works"}, "if": [], "category": "newsletter", "plain_text": "Hi there,\n\nAnvil is on the road this winter! We'll be presenting at a bunch of\ndevelopment- and Python-related meetups. Join us for a hands-on\nworkshops, where you can practice building full-stack web apps with\nnothing but Python -- and for technical talks about how Anvil works\nunder the hood.\n\n**Upcoming events:**\n\nNov 22nd: London, UK (London Python)\n(https://www.meetup.com/LondonPython/)\n\nDec 4th: St Louis, MO, USA (STL Python)\n(https://www.meetup.com/STL-Python/)\n\nJan 8th: Indianapolis, IN, USA (IndyPy)\n(https://www.meetup.com/indypy/)\n\nJan 10th: Frederick, MA, USA (Python Frederick)\n(https://www.meetup.com/python-frederick/)\n\nJan 17th: Manchester, UK (North West Python)\n(https://www.meetup.com/Python-North-West-Meetup)\n\nJan 29th: Sheffield, UK (Python Sheffield)\n(https://twitter.com/pysheff)\n\n\n**Can we come to your local meetup?**\n\nDrop us a line at contact@anvil.works! We can do local or remote\npresentations almost anywhere in the world. We can also offer\nhelp and materials if you'd like to talk about Anvil to your\nlocal development group - just get in touch.\n\n\nThat's it for this month. If you've got any questions, come and ask\nus on the forum: https://anvil.works/forum. Happy coding!\n\nAll the best,\n\nMeredydd\n\n--\n\nIf you don't want any more email from us, just click here:\n%%UNSUBSCRIBE_LINK%%\n", "html": "\n\n \n \n \n \n \n \n \n \n \n \n \n \n
\n \n
\n \n \n \n \n \n \n
\n \n
\n \n \n \n \n \n \n \n \n \n
\n \n \n \n \n \n \n
\"Anvil\"
\n
\n
\n

Coming to a Meetup Near You

\n\n

\n
\n
\n
\n \n
\n
\n \n \n
\n \n \n \n \n \n \n
\n \n
\n \n \n \n \n \n \n
\n
\n

Hi there,

\n\n

Anvil is on the road this winter! We’ll be presenting at a bunch of\ndevelopment- and Python-related meetups. Join us for a hands-on\nworkshops, where you can practice building full-stack web apps with\nnothing but Python – and for technical talks about how Anvil works\nunder the hood.

\n\n

Upcoming events:

\n\n
    \n
  • \n

    Nov 22nd: London, UK (London Python)
    \nI (Meredydd Luff) will be demonstrating Anvil, and talking about how it works under the hood.

    \n
  • \n
  • \n

    Dec 4th: St Louis, MO, USA (STL Python)
    \nStefano Menci will be leading a hands-on workshop.

    \n
  • \n
  • \n

    Jan 8th: Indianapolis, IN, USA (IndyPy)
    \nThis is the Indianapolis pitch competition for PyCon Startup Row! Last year, we built the voting app for the competition, live on stage in London. This year, we’re giving a full-length talk.

    \n
  • \n
  • \n

    Jan 10th: Frederick, MA, USA (Python Frederick)
    \nI will be demonstrating Anvil, and talking about how it works under the hood.

    \n
  • \n
  • \n

    Jan 17th: Manchester, UK (North West Python)
    \n(Provisional)

    \n
  • \n
  • \n

    Jan 29th: Sheffield, UK (Python Sheffield)
    \nWorkshop time! Come and try Anvil yourself with friendly hands-on assistance.

    \n
  • \n
\n\n

Can we come to your local meetup?

\n\n

We’d love to present at your event. Drop us a line at\ncontact@anvil.works! We can do local or remote presentations\nalmost anywhere in the world. We can also offer help and materials\nif you’d like to lead an Anvil workshop yourself - just get in touch.

\n\n

That’s it for this month. If you’ve got any questions, come and ask\nus on the forum: https://anvil.works/forum. Happy coding!

\n\n

All the best,

\n\n

Meredydd

\n\n

\n\n

If you don’t want any more email from us, just click here:\n%%UNSUBSCRIBE_LINK%%

\n\n
\n
\n
\n \n
\n
\n \n\n \n
\n \n \n \n \n \n \n
\n \n
\n \n \n \n \n \n \n
\n \n
\n
\n \n
\n \n \n \n\n \n \n \n
\n
\n

Follow us on Twitter: @anvil_works

\n
\n
\n
\n \n
\n
\n \n
\n \n\n" }, { "name": "newsletter-2018-12", "date": "2010-01-01 00:00:00 -0600", "tags": ["email","newsletter","interrupt"], "expires_on": "2018-12-30", "valid_from": "2018-12-20", "draft": false, "title": "Make your app stand out - Anvil December update", "subject": "Make your app stand out - Anvil December update", "resendable": null, "priority": null, "send_interval": 1, "from": {"name":"Shaun Taylor-Morgan","address":"shaun@anvil.works"}, "if": [], "category": "newsletter", "plain_text": "Hi there,\n\nA happy holiday season to everybody! As the nights draw in and the temperatures drop [^footnote], we've been working hard to make Anvil even cooler.\n\n[^footnote] Temperature changes may vary by hemisphere. Consult your globe for more information.\n\n**1. Titles, logos and descriptions**\n\nNow you can customise the public face of your app using Titles and Logos. \nThis configures search engine and social media previews as well as your app's favicon and the title of the browser tab.\n\nLook for Titles and Logos under the Gear menu to brand your app!\n\n**2. Introducing the Anvil Library**\n\nThere's now a library of useful components to clone for free and use in your apps.\n\nClick here to check it out: https://anvil.works/library\n\nThe components are implemented as Anvil apps, so they are composed of the standard atomic Anvil Toolbox components. This\nmeans you can see exactly how they work and modify them to suit your requirements.\n\nThe current list of components in the library is:\n - An input Form validation module\n - A translation module\n - A multi-select DropDown component\n - A progress bar\n - A sliding toggle switch\n - An input box that displays results as queries are typed\n\nWe'll be adding more components as time goes on. If you have any requests, why not start a thread in the [Forum](https://anvil.works/forum)?\n\nDo you have a component to share? We welcome submissions. Contact us at [contact@anvil.works](mailto:contact@anvil.works)!\n\nA special thanks goes to David Wylie for his excellent Multi-Select DropDown and Toggle Switch/Progress Bar components,\nwhich are available for everybody in the library.\n\n**3. Even more ways to search our documentation**\n\nWe're constantly adding to our documentation search system. A single search box finds results from the Reference Docs,\nour tutorials and cookbooks, selected Forum posts, example apps to clone, and other specially-written hints and snippets.\n\nUse the 'How do I...' search box in the top-right corner of the Anvil editor, or visit the Learning Centre (https://anvil.works/learn) or Knowledge Base (https://anvil.works/kb) pages for a bigger version.\n\n**4. Other updates**\n\nAs usual, we've been working on the details too. Here are a few details you might have missed:\n\n* The Data Tables Service now tells you how many Rows are in your table.\n\n* Remembered user sessions are now stored in the Users table in Data Tables, so you can delete them to log users out.\n\n* There's now a distinct URL associated with editing an app, so you can bookmark the Anvil editor with an app open.\n\n\nRemember, if you've got any questions, come and ask us on the forum: https://anvil.works/forum. \n\nUntil next time, happy building! See you in the New Year.\n\nAll the best,\nShaun\n", "html": "\n\n \n \n \n \n \n \n \n \n \n \n \n \n
\n \n
\n \n \n \n \n \n \n
\n \n
\n \n \n \n \n \n \n \n \n \n
\n \n \n \n \n \n \n
\"Anvil\"
\n
\n
\n

Make your app stand out - Anvil December update

\n\n

\n
\n
\n
\n \n
\n
\n \n \n
\n \n \n \n \n \n \n
\n \n
\n \n \n \n \n \n \n
\n
\n

Hi there,

\n\n

A happy holiday season to everybody! As the nights draw in and the temperatures drop*, we’ve been working hard to make Anvil even cooler.

\n\n

* Temperature changes may vary by hemisphere. Consult your globe for more information.

\n\n

1. Titles, logos and descriptions

\n\n

Now you can customise the public face of your app using Titles and Logos. \nThis configures search engine and social media previews as well as your app’s favicon and the title of the browser tab.

\n\n

\n\n

Look for Titles and Logos under the Gear menu to brand your app!

\n\n

2. Introducing the Anvil Library

\n\n

There’s now a library of useful components to clone for free and use in your apps.

\n\n

Click here to check it out

\n\n

The components are implemented as Anvil apps, so they are composed of the standard atomic Anvil Toolbox components. This\nmeans you can see exactly how they work and modify them to suit your requirements.

\n\n

The current list of components in the library is:

\n
    \n
  • An input Form validation module
  • \n
  • A translation module
  • \n
  • A multi-select DropDown component
  • \n
  • A progress bar
  • \n
  • A sliding toggle switch
  • \n
  • An input box that displays results as queries are typed
  • \n
\n\n

We’ll be adding more components as time goes on. If you have any requests, why not start a thread in the Forum?

\n\n

Do you have a component to share? We welcome submissions. Contact us at contact@anvil.works!

\n\n

A special thanks goes to David Wylie for his excellent Multi-Select DropDown and Toggle Switch/Progress Bar components,\nwhich are available for everybody in the library.

\n\n

3. Even more ways to search our documentation

\n\n

We’re constantly adding to our documentation search system. A single search box finds results from the Reference Docs,\nour tutorials and cookbooks, selected Forum posts, example apps to clone, and other specially-written hints and snippets.

\n\n

\n\n

Use the ‘How do I…’ search box in the top-right corner of the Anvil editor, or visit the Learning Centre or Knowledge Base pages for a bigger version.

\n\n

\n\n

4. Other updates

\n\n

As usual, we’ve been working on the details too. Here are a few details you might have missed:

\n\n
    \n
  • \n

    The Data Tables Service now tells you how many Rows are in your table.

    \n
  • \n
  • \n

    Remembered user sessions are now stored in the Users table in Data Tables, so you can delete them to log users out.

    \n
  • \n
  • \n

    There’s now a distinct URL associated with editing an app, so you can bookmark the Anvil editor with an app open.

    \n
  • \n
\n\n

Remember, if you’ve got any questions, come and ask us on the forum: https://anvil.works/forum.

\n\n

Until next time, happy building! See you in the New Year.

\n\n

All the best,

\n\n

Shaun

\n\n

\n\n

If you don’t want any more email from us, just click here:\n%%UNSUBSCRIBE_LINK%%

\n\n
\n
\n
\n \n
\n
\n \n\n \n
\n \n \n \n \n \n \n
\n \n
\n \n \n \n \n \n \n
\n \n
\n
\n \n
\n \n \n \n\n \n \n \n
\n
\n

Follow us on Twitter: @anvil_works

\n
\n
\n
\n \n
\n
\n \n
\n \n\n" }, { "name": "newsletter-2019-01", "date": "2010-01-01 00:00:00 -0600", "tags": ["email","newsletter","interrupt"], "expires_on": "2019-02-05", "valid_from": "2019-01-20", "draft": false, "title": "Ejector Seats, a Partner Program, Meetups and more...", "subject": "Ejector Seats, a Partner Program, Meetups and more - Anvil January update", "resendable": null, "priority": null, "send_interval": 1, "from": {"name":"Meredydd Luff","address":"meredydd@anvil.works"}, "if": [], "category": "newsletter", "plain_text": "Hi there,\n\nHappy New Year! I hope 2019 has been treating you well. We know many of you have built great things already this year -- and we've been building too! There's lots to share, so let's dig in:\n\n\n**1. Escape Hatches and Ejector Seats**\n\nAs programmers, it's great when we can use an abstraction to turn a complex thing (eg HTML+CSS) into a simple thing (eg a drag-and-drop designer). But what happens when you hit the limits of that abstraction?\n\nI talk about how we handle this challenge in Anvil, in a new blog post:\nEscape Hatches and Ejector Seats\n(https://anvil.works/blog/escape-hatches-and-ejector-seats)\n\n\n**2. New Anvil tutorial from Electromaker**\n\nIf you're building an Internet of Things (IoT) device, or you just like cool projects with a Raspberry Pi, check out this new tutorial from Electromaker:\n\nIntroduction to Anvil: A tool to create a web interface for any Python project\n(https://www.electromaker.io/tutorial/blog/introduction-to-anvil-a-tool-to-create-a-web-interface-for-any-python-project)\n\n\n**3. Do you build apps for other people? Join our Partner Program!**\n\nAre you a consultant or contractor? Do you build apps for other people with Anvil? We often get approached by people saying \"Anvil is really cool, but I need someone to build this application for me.\"\n\nWe're collecting a group of partners with a track record of success with Anvil, and promoting them on our website. To join the Partner Program, send us an email: partners@anvil.works\n\n\n**4. Want Anvil at a meetup near you?**\n\nWe're still on tour! We've presented at meetups from London to Indianapolis, and there's plenty more to come: Check out our upcoming events:\nhttps://anvil.works/blog/upcoming-events-19-01\n\nDo you host a meetup or conference? Why not invite us to present? Wherever you are in the world, we can give remote presentations by video link.\n\n\"IndyPy loved having Meredydd speak to our group. Very engaging, even across the Atlantic!\"\n-- Calvin Hendryx-Parker, organiser of IndyPy\n\n\n**5. Other updates**\n\nAs always, we've been improving Anvil in lots of little ways. Here are a few you might have missed:\n\n* You can now download any Media object in the user's browser by calling `download(media)`.\nRead the docs: https://anvil.works/doc/#anvil_module\n\n* If you use Javascript with Anvil -- or external services such as Intercom -- we've made it even easier to import these native libraries.\nRead the guide on our website: https://anvil.works/kb/importing-js-libraries\n\n* Your app can now find out its ID with `anvil.app.id`, and whether this is the published version or running in the editor with `anvil.app.branch`.\nCheck out the docs: https://anvil.works/doc/#anvil_module\n\n* The YouTubeVideo component now raises a `state_changed` event when it starts or stops playing.\n\n\n\nRemember, if you've got any questions, come and ask on the community forum: https://anvil.works/forum \n\nUntil next time -- happy building!\n\nAll the best,\n\nMeredydd\n\n--\n\nIf you don't want any more email from us, just click here:\n%%UNSUBSCRIBE_LINK%%\n", "html": "\n\n \n \n \n \n \n \n \n \n \n \n \n \n
\n \n
\n \n \n \n \n \n \n
\n \n
\n \n \n \n \n \n \n \n \n \n
\n \n \n \n \n \n \n
\"Anvil\"
\n
\n
\n

Ejector Seats, a Partner Program, Meetups and more...

\n\n

\n
\n
\n
\n \n
\n
\n \n \n
\n \n \n \n \n \n \n
\n \n
\n \n \n \n \n \n \n
\n
\n

Hi there,

\n\n

Happy New Year! I hope 2019 has been treating you well. We know many of you have built great things already this year – and we’ve been building too! There’s lots to share, so let’s dig in:

\n\n

1. Escape Hatches and Ejector Seats

\n\n

As programmers, it’s great when we can use an abstraction to turn a complex thing (eg HTML+CSS) into a simple thing (eg a drag-and-drop designer). But what happens when you hit the limits of that abstraction?

\n\n

I talk about how we handle this challenge in Anvil, in a new blog post:
Escape Hatches and Ejector Seats

\n\n

2. New Anvil tutorial from Electromaker

\n\n

If you’re building an Internet of Things (IoT) device, or you just like cool projects with a Raspberry Pi, check out this new tutorial from Electromaker:

\n\n

Introduction to Anvil: A tool to create a web interface for any Python project\n

\n\n

3. Do you build apps for other people? Join our Partner Program!

\n\n

Are you a consultant or contractor? Do you build apps for other people with Anvil? We often get approached by people saying “Anvil is really cool, but I need someone to build this application for me.”

\n\n

We’re collecting a group of partners with a track record of success with Anvil, and promoting them on our website. To join the Partner Program, send us an email: partners@anvil.works

\n\n

4. Want Anvil at a meetup near you?

\n\n

We’re still on tour! We’ve presented at meetups from London to Indianapolis, and there’s plenty more to come: Check out our upcoming events.

\n\n

Do you host a meetup or conference? Why not invite us to present? Wherever you are in the world, we can give remote presentations by video link.

\n\n

“IndyPy loved having Meredydd speak to our group. Very engaging, even across the Atlantic!”\n– Calvin Hendryx-Parker, organiser of IndyPy

\n\n

5. Other updates

\n\n

As always, we’ve been improving Anvil in lots of little ways. Here are a few you might have missed:

\n\n
    \n
  • \n

    You can now download any Media object in the user’s browser by calling download(media). Read the docs here.

    \n
  • \n
  • \n

    If you use Javascript with Anvil – or external services such as Intercom – we’ve made it even easier to import these native libraries. Read the guide on our website.

    \n
  • \n
  • \n

    Your app can now find out its ID with anvil.app.id, and whether this is the published version or running in the editor with anvil.app.branch. Check out the docs!

    \n
  • \n
  • \n

    The YouTubeVideo component now raises a state_changed event when it starts or stops playing.

    \n
  • \n
\n\n

Remember, if you’ve got any questions, come and ask on the community forum: https://anvil.works/forum.

\n\n

Until next time – happy building!

\n\n

All the best,

\n\n

Meredydd

\n\n

\n\n

If you don’t want any more email from us, just click here:\n%%UNSUBSCRIBE_LINK%%

\n\n
\n
\n
\n \n
\n
\n \n\n \n
\n \n \n \n \n \n \n
\n \n
\n \n \n \n \n \n \n
\n \n
\n
\n \n
\n \n \n \n\n \n \n \n
\n
\n

Follow us on Twitter: @anvil_works

\n
\n
\n
\n \n
\n
\n \n
\n \n\n" }, { "name": "newsletter-2019-02", "date": "2010-01-01 00:00:00 -0600", "tags": ["email","newsletter","interrupt"], "expires_on": "2019-03-05", "valid_from": "2019-02-27", "draft": false, "title": "We're hiring! Plus: Data Queries, Managing Money and more...", "subject": "We're hiring! Plus: Better Queries, Managing Money, and more - Anvil February update", "resendable": null, "priority": null, "send_interval": 1, "from": {"name":"Meredydd Luff","address":"meredydd@anvil.works"}, "if": [], "category": "newsletter", "plain_text": "Hi there,\n\nWe're seeing glimmers of sunshine here in Cambridge -- here's hoping things\nare sunny for you. We've got some exciting new features to make building\nweb apps even easier -- and we're also growing our team! Let's get to it:\n\n\n**1. Want to Work at Anvil?**\n\nCome join us as a Developer Evangelist! We're looking for someone with\ngreat communication skills to help us share Anvil with the world. You’ll be\nbuilding example applications, writing blog posts and tutorials, leading\nevents and helping the Anvil community -- from individual developers to\nhuge tech companies -- to build great apps. It's rewarding work: developers\nlove being introduced to Anvil (our stand is always crowded at conferences!).\n\nYou don't need to be a Python expert already, but you will be pretty soon\n-- you’ll be working directly with the Anvil authors as you get up to\nspeed. If you're in a related field like science, teaching, or engineering\n(to name but a few), and you want to branch out into development, this\ncould be your chance.\n\nLearn more and apply on our website: https://anvil.works/jobs\n\n\n**2. Build Your Own Accounting Software in One Blog Post**\n\nWe did a survey, and we found that 8 out of 10 startup founders don't know\nthe basics of how businesses represent money! Learn how, the fun way -- by\nbuilding your own money-management system in a few lines of Python. Read\nthe guide and code along on our blog:\n\nhttps://anvil.works/blog/double-entry-accounting-for-engineers\n\n\n**3. Powerful Queries for Data Tables**\n\nWe've overhauled how you query Data Tables, and added a some flexible new\nqueries, so you can perform much more fine-grained searches. We've got\nrange queries, full-text search, and more -- check it out! And there's even\nmore power for our Dedicated Plan customers, who can add custom indexes to\ntheir tables.\n\nLearn more on our blog:\nhttps://anvil.works/blog/announcing-queries\n\n\n**4. Using External Databases from Anvil**\n\nDo you already have a database you want to use from your Anvil app? It's\neasy -- just use the standard Python tools! Find sample code, and a fully\nworking example app using a Postgres database, on our website:\n\nhttps://anvil.works/kb/using-db-postgresql\n\n(Of course, you can use MySQL, SQL Server, or MongoDB just as easily. If\nit's got a Python API, you can use it with Anvil!)\n\n\n**5. Other updates**\n\nAs always, we've been improving Anvil in lots of little ways. Here are a\nfew you might have missed:\n\n* Want to call server code without displaying a spinning loading indicator?\n Now there's an easier way:\n ```\n with anvil.server.no_loading_indicator:\n anvil.server.call(\"my_function\")\n ```\n\n* You can now draw images onto Canvas components. Check out the forum post,\n complete with Australian wildlife:\n https://anvil.works/forum/t/image-zoom-on-mouseover/2319/2\n\n* Do you accept Stripe payments with Anvil's built-in Stripe support? Good\n news -- we no longer charge any extra fees! You will just pay the\n standard Stripe rates.\n\n* It's now easier to work with files and Media in Server Modules: Get a\n temporary file from any Media object with `anvil.media.TempFile()`, and\n read files into Media objects with `anvil.media.from_file()`.\n\n Read the docs: https://anvil.works/doc/#files_in_server_modules\n\n* Anvil now works better with password managers, including Chrome's\n built-in password manager.\n\n* We'll be at PyCon Lithuania *and* PyCon Slovakia this year, as well as\n PyCon US and PyCon UK! Find out more on our Upcoming Events page:\n https://anvil.works/blog/upcoming-events-19-01\n\n\nIf you want to know more about any of these, come and ask on the community\nforum:\nhttps://anvil.works/forum\n\n\nHappy building!\n\nAll the best,\n\nMeredydd\n\n--\n\nIf you don't want any more email from us, just click here:\n%%UNSUBSCRIBE_LINK%%\n", "html": "\n\n \n \n \n \n \n \n \n \n \n \n \n \n
\n \n
\n \n \n \n \n \n \n
\n \n
\n \n \n \n \n \n \n \n \n \n
\n \n \n \n \n \n \n
\"Anvil\"
\n
\n
\n

We're hiring! Plus: Data Queries, Managing Money and more...

\n\n

\n
\n
\n
\n \n
\n
\n \n \n
\n \n \n \n \n \n \n
\n \n
\n \n \n \n \n \n \n
\n
\n

Hi there,

\n\n

We’re seeing glimmers of sunshine here in Cambridge – here’s hoping things are sunny for you. We’ve got some exciting new features to make building web apps even easier – and we’re also growing our team! Let’s get to it:

\n\n

1. Want to Work at Anvil?

\n\n

Come join us as a Developer Evangelist! We’re looking for someone with great communication skills to help us share Anvil with the world. You’ll be building example applications, writing blog posts and tutorials, leading events and helping the Anvil community – from individual developers to huge tech companies – to build great apps. It’s rewarding work: developers love being introduced to Anvil (our stand is always crowded at conferences!).

\n\n

You don’t need to be a Python expert already, but you will be pretty soon – you’ll be working directly with the Anvil authors as you get up to speed. If you’re in a related field like science, teaching, or engineering (to name but a few), and you want to branch out into development, this could be your chance.

\n\n

Learn more and apply on our website

\n\n
\"Crowd
\n\n

2. Build Your Own Accounting Software in One Blog Post

\n\n

We did a survey, and we found that 8 out of 10 startup founders don’t know the basics of how businesses represent money! Learn how, the fun way – by building your own money-management system in a few lines of Python. Read the guide and code along on our blog:

\n\n

Double-Entry Bookkeeping for Engineers

\n\n

3. Powerful Queries for Data Tables

\n\n

We’ve overhauled how you query Data Tables, and added a some flexible new queries, so you can perform much more fine-grained searches. We’ve got range queries, full-text search, and more – check it out! And there’s even more power for our Dedicated Plan customers, who can add custom indexes to their tables.

\n\n

Learn more on our blog:\nData Tables now have a rich query language

\n\n

4. Using External Databases from Anvil

\n\n

Do you already have a database you want to use from your Anvil app? It’s easy – just use the standard Python tools! Find sample code, and a fully working example app using a Postgres database, on our website:

\n\n

Using an external Postgres database from Anvil

\n\n

(Of course, you can use MySQL, SQL Server, or MongoDB just as easily. If it’s got a Python API, you can use it with Anvil!)

\n\n

5. Other updates

\n\n

As always, we’ve been improving Anvil in lots of little ways. Here are a few you might have missed:

\n\n
    \n
  • Want to call server code without displaying a spinning loading indicator? Now there’s an easier way:\n
    with anvil.server.no_loading_indicator:\n  anvil.server.call(\"my_function\")\n
    \n
  • \n
  • \n

    You can now draw images onto Canvas components. Check out the forum post – complete with Australian wildlife.

    \n
  • \n
  • \n

    Do you accept Stripe payments with Anvil’s built-in Stripe support? Good news – we no longer charge any extra fees! You will just pay the standard Stripe rates.

    \n
  • \n
  • \n

    It’s now easier to work with files and Media in Server Modules: Get a temporary file from any Media object with anvil.media.TempFile(), and read files into Media objects with anvil.media.from_file(). Read the docs here

    \n
  • \n
  • \n

    Anvil now works better with password managers, including Chrome’s built-in password manager.

    \n
  • \n
  • We’ll be at PyCon Lithuania and PyCon Slovakia this year, as well as PyCon US and PyCon UK! Find out more on our Upcoming Events page.
  • \n
\n\n

If you want to know more about any of these, come and ask on the community forum: https://anvil.works/forum

\n\n

Happy building!

\n\n

Meredydd

\n\n

\n\n

If you don’t want any more email from us, just click here:\n%%UNSUBSCRIBE_LINK%%

\n\n
\n
\n
\n \n
\n
\n \n\n \n
\n \n \n \n \n \n \n
\n \n
\n \n \n \n \n \n \n
\n \n
\n
\n \n
\n \n \n \n\n \n \n \n
\n
\n

Follow us on Twitter: @anvil_works

\n
\n
\n
\n \n
\n
\n \n
\n \n\n" }, { "name": "newsletter-2019-03", "date": "2010-01-01 00:00:00 -0600", "tags": ["email","newsletter","interrupt"], "expires_on": "2019-04-01", "valid_from": "2019-03-28", "draft": false, "title": "Build a Search Engine, Background Tasks, and more", "subject": "How does a search engine work? Plus: Background Tasks, Custom Themes and more -- Anvil March update", "resendable": null, "priority": null, "send_interval": null, "from": {"name":"Meredydd Luff","address":"meredydd@anvil.works"}, "if": [], "category": "announcement", "plain_text": "\nHey,\n\nHave you ever wondered how Google works? My colleague Shaun did -- and so he\nbuilt a search engine from scratch to find out! Of course, this is Anvil, so\nit was a web app built with nothing but Python. Check it out:\n\nhttps://anvil.works/blog/how-to-build-a-search-engine\n\n----\n\n**Introducing Background Tasks**\n\nOf course, crawling the web is a long job, and you want to run it in the\nbackground while you interact with your app. There are lots of jobs like\nthis, which is why I am delighted to announce Background Tasks for Anvil.\nNow you can kick off long-running processes and monitor their progress\nwithout blocking your app.\n\nJust tag a function with `@anvil.server.background_task`,\nthen call `anvil.server.launch_background_task()` to start it going.\n\nUse Background Tasks for heavyweight calculations, housekeeping processes,\nconnection pools, downloading large files - anything you want to do in the\nbackground while the user carries on\ninteracting with your app.\n\nLearn how to trigger Background Tasks, communicate with them, and manage\nthem, by following our tutorial and building a web crawler:\n\n%%ANVIL_ORIGIN%%/blog/background-tasks-tutorial\n\n----\n\n**Customising your app's look and feel**\n\nWant to make your Anvil app look exactly how you want? If you want your apps\nto match your company's brand, or just your own design vision, you can use\nHTML and CSS to give your apps any style you want!\n\nFor example, the other week I saw a Hacker News poster wishing they could\nmake their prototype apps look hand-drawn, like the XKCD comic. So I built a\ncustom theme to make any Anvil app look like XKCD. Click here to see how it\nworks, or to use it yourself:\n\nhttps://anvil.works/blog/xkcd-style-apps\n\n----\n\n**Other Updates**\n\nAs always, we've been busy making Anvil better in all sorts of little ways.\nHere are a few of this month's improvements:\n\n* Performance improvements everywhere! Server-side code starts faster, Data\n Tables access is faster, apps load faster. Enjoy, and expect more soon.\n\n* We've made it easier to theme components in your Anvil app. (You saw the\n XKCD-style theme earlier, didn't you?)\n\n* We've installed a bunch more packages for your server modules, including\n NLTK and Segment analytics. \n\n\nGot more questions? Come and join us on the Anvil Community Forums:\nhttps://anvil.works/forum\n\n\nAll the best,\n\nMeredydd\n\n--\n\nIf you don't want any more email from us, just click %%UNSUBSCRIBE_LINK%%. \n \n", "html": "\n\n \n \n \n \n \n \n \n \n \n \n \n \n
\n \n
\n \n \n \n \n \n \n
\n \n
\n \n \n \n \n \n \n \n \n \n
\n \n \n \n \n \n \n
\"Anvil\"
\n
\n
\n

Build a Search Engine, Background Tasks, and more

\n\n

\n
\n
\n
\n \n
\n
\n \n \n
\n \n \n \n \n \n \n
\n \n
\n \n \n \n \n \n \n
\n
\n

Hi again,

\n\n

Have you ever wondered how Google works? My colleague Shaun did – and so he built a search engine from scratch to find out! Of course, this is Anvil, so it was a web app built with nothing but Python. Check it out:

\n\n

How to Build a Search Engine

\n\n
\n\n

Introducing Background Tasks

\n\n

Of course, crawling the web is a long job, and you want to run it in the background while you interact with your app. There are lots of jobs like this, which is why I’m delighted to announce Background Tasks for Anvil. Now you can kick off long-running processes and monitor their progress without blocking your app.

\n\n

Just tag a function with @anvil.server.background_task, then call anvil.server.launch_background_task() to start it going.

\n\n

You can use Background Tasks for heavyweight calculations, housekeeping processes, downloading large files…anything you want to do in the background while the user carries on interacting with your app.

\n\n

Learn how to trigger Background Tasks, communicate with them, and manage them, by following the tutorial and building a web crawler. Or open the example in Anvil and \ninvestigate!

\n\n
\n\n

Customising your app’s look and feel

\n\n

Want to make your Anvil app look exactly how you want? If you want your apps to match your company’s brand, or just your own design vision, you can use HTML and CSS to give your apps any style you want!

\n\n

For example, the other week I saw a Hacker News poster wishing they could make their prototype apps look hand-drawn, like the XKCD comic. So I built a custom theme to make any Anvil app look like XKCD. Here’s what it looks like:

\n\n
\n

\nClick here to see how it's done, or use it yourself!\n
\n


\n\n
\n\n

Other Updates

\n\n

As always, we’ve been busy making Anvil better in all sorts of little ways. Here are a few of this month’s improvements:

\n\n
    \n
  • \n

    Performance improvements everywhere! Server-side code starts faster, Data Tables access is faster, apps load faster. Enjoy, and expect more soon.

    \n
  • \n
  • \n

    We’ve made it easier to theme components in your Anvil app. (You saw the XKCD-style theme earlier, didn’t you?)

    \n
  • \n
  • \n

    We’ve installed a bunch more packages for your server modules, including NLTK and Segment analytics.

    \n
  • \n
\n\n

Got more questions? Come and join us on the Anvil Community Forums: https://anvil.works/forum

\n\n

All the best,

\n\n

Meredydd

\n\n

\n\n

If you don’t want any more email from us, just click here to unsubscribe.

\n\n\n
\n
\n
\n \n
\n
\n \n\n \n
\n \n \n \n \n \n \n
\n \n
\n \n \n \n \n \n \n
\n \n
\n
\n \n
\n \n \n \n\n \n \n \n
\n
\n

Follow us on Twitter: @anvil_works

\n
\n
\n
\n \n
\n
\n \n
\n \n\n" }, { "name": "newsletter-2019-04", "date": "2010-01-01 00:00:00 -0600", "tags": ["email","newsletter","interrupt"], "expires_on": "2019-05-02", "valid_from": "2019-04-30", "draft": false, "title": "Are you coming to PyCon? Plus: Building HTTP APIs, Pagerank in Python, and more", "subject": "Are you coming to PyCon? Plus: Building HTTP APIs, Pagerank in Python, and more -- Anvil April update", "resendable": null, "priority": null, "send_interval": null, "from": {"name":"Meredydd Luff","address":"meredydd@anvil.works"}, "if": [], "category": "newsletter", "plain_text": "Hi again,\n\nWe're on our way to PyCon (https://us.pycon.org/)! We'll be demonstrating\nhow to build full-stack web apps with nothing but Python, at our stand in\nthe Exhibition Hall. If you're coming, we'd love to meet you there -- find\nour stand in the Exhibition Hall, or look out for a lightning talk from me.\n\nIn the meantime, here's what's new with Anvil:\n\n**1. Better HTTP APIs**\n\nAnvil isn't just the easiest way to build Web user interfaces -- it's also\ngreat for building server-side apps and HTTP APIs!\n\nCheck out new our step-by-step guide to building a REST API with Anvil:\nhttps://anvil.works/blog/http-apis-in-python\n\n\nThis month, we've updated Anvil's HTTP API support, with a focus on making\nit easier to build secure APIs. Check out the guide to learn how we\nautomatically protect against XSRF attacks, how we've made CORS simple,\nand more!\n\nOr just check out the API documentation:\nhttps://anvil.works/doc#http_apis\n\n\n**2. PageRank in Python**\n\nThe \"Let's Build a Search Engine\" odyssey continues! This time, Shaun\nimplements Google's famous PageRank algorithm in two dozen lines of Python.\nCheck it out:\n\nLet's Build a Search Engine: How PageRank Works\nhttps://anvil.works/blog/search-engine-pagerank\n\n\n**3. More Updates**\n\nAs always, we've been busy making Anvil better in all sorts of ways. Here\nare a few you might have missed:\n\n* **Filter your uploads:** FileLoader components now have a `file_types`\nproperty, so you can request \"only images\" or \"only `.xls` files\".\nRead the API docs: https://anvil.works/doc#fileloader\n\n* **See the structure of your page:** When you're choosing components\nfrom the drop-down in the Properties panel, you can now see the full\nheirarchy of components, including their containers.\n\n* **Store extra files in Git:** If you're using Git to store and modify\nyour Anvil apps, you can now store extra files in that repository! Time to\nadd your `README.txt`, or utility scripts, to the same repository as the\nrest of your app.\n\n* **New Blog Archive:** We've gathered the articles, how-to guides,\nannouncements and more into a handy blog archive. Check it out:\n https://anvil.works/blog/archive\n\n\n\nIf you're coming to PyCon, I look forward to meeting you at our booth!\nOtherwise, come and join us on the Anvil Community Forums:\nhttps://anvil.works/forum\n\n\nAll the best,\n\nMeredydd\n\n--\n\nIf you don't want any more email from us, just click here:\n%%UNSUBSCRIBE_LINK%%. \n \n", "html": "\n\n \n \n \n \n \n \n \n \n \n \n \n \n
\n \n
\n \n \n \n \n \n \n
\n \n
\n \n \n \n \n \n \n \n \n \n
\n \n \n \n \n \n \n
\"Anvil\"
\n
\n
\n

Are you coming to PyCon? Plus: Building HTTP APIs, Pagerank in Python, and more

\n\n

\n
\n
\n
\n \n
\n
\n \n \n
\n \n \n \n \n \n \n
\n \n
\n \n \n \n \n \n \n
\n
\n

Hi again,

\n\n

We’re on our way to PyCon! We’ll be demonstrating how to build full-stack web apps with nothing but Python, at our stand in the Exhibition Hall. If you’re coming, we’d love to meet you there – find us at our stand, or look out for a lightning talk from me.

\n\n

In the meantime, here’s what’s new with Anvil:

\n\n

1. Better HTTP APIs

\n\n

Anvil isn’t just the easiest way to build Web user interfaces – it’s also great for building server-side apps with HTTP APIs. Check out our new step-by-step guide to building a REST API with Anvil:

\n\n

The Easiest Way to Build an HTTP API with Python

\n\n

This month, we’ve updated Anvil’s HTTP API support, with a focus on making\nit easier to build secure APIs. Check out the guide to learn how we\nautomatically protect against XSRF attacks, how we’ve made CORS simple,\nand more! Or just check out the API documentation.

\n\n

2. PageRank in Python

\n\n

The “Let’s Build a Search Engine” odyssey continues! This time, Shaun implements Google’s famous PageRank algorithm in two dozen lines of Python. Check it out:

\n\n

Let’s Build a Search Engine: How PageRank Works

\n\n

3. More Updates

\n\n

As always, we’ve been busy making Anvil better in all sorts of ways. Here are a few you might have missed:

\n\n
    \n
  • \n

    Filter your uploads: FileLoader components now have a file_types property, so you can request “only images” or “only .xls files”. Read the API docs here

    \n
  • \n
  • See the structure of your page: When you’re choosing components from the drop-down in the Properties panel, you can now see the full heirarchy of components, including their containers:\n
    \"Component
    \n
  • \n
  • \n

    Store extra files in Git: If you’re using Git to store and modify your Anvil apps, you can now store extra files in that repository! Time to add your README.txt, or utility scripts, to the same repository as the rest of your app.

    \n
  • \n
  • New Blog Archive: We’ve gathered the articles, how-to guides, announcements and more into a handy blog archive – check it out!
  • \n
\n\n

If you’re coming to PyCon, I look forward to meeting you at our booth! Otherwise, come and join us on the Anvil Community Forums: https://anvil.works/forum

\n\n

All the best,

\n\n

Meredydd

\n\n

\n\n

If you don’t want any more email from us, just click here to unsubscribe.

\n\n
\n
\n
\n \n
\n
\n \n\n \n
\n \n \n \n \n \n \n
\n \n
\n \n \n \n \n \n \n
\n \n
\n
\n \n
\n \n \n \n\n \n \n \n
\n
\n

Follow us on Twitter: @anvil_works

\n
\n
\n
\n \n
\n
\n \n
\n \n\n" } ]